Card()获得了意外的关键字参数'initial'

问题描述 投票:0回答:1

我在不使用管理应用程序的情况下将CRUD界面放在一起,这对Python和Django还是很新的,但是当我创建一个条目时,它会在标题中抛出错误。

这是目标页面:

<form method="post">
  {% csrf_token %}
  Card Name:<br>
  <input type="text" name="name"><br>
  Mana Cost:<br>
  <input type="text" name="mana_cost"><br>
  Supertype:<br>
  <input type="text" name="supertype"><br>
  Keyword 1:<br>
  <input type="text" name="keyword_1"><br>
  Keyword 2:<br>
  <input type="text" name="keyword_2"><br>
  Keyword 3:<br>
  <input type="text" name="keyword_3"><br>
  Rules Text:<br>
  <input type="text" name="rules_text"><br>
  Power & Toughness:<br>
  <input type="text" name="power_toughness"><br>
  <input type="submit" value="Add Card"><br>
{% endblock %}

我的views.py:

from task99_app import forms
from django.views.generic import ListView
from django.views.generic import DetailView
from django.views.generic.edit import CreateView
from django.views.generic.edit import UpdateView
from django.views.generic.edit import DeleteView
from .models import Card
# Create your views here.

def home(request):
    return render(request, 'home.html')

class CardList(ListView):
    model = Card

class CardCreate(CreateView):
    form_class = Card

class CardDetail(DetailView):
    model = Card

class CardUpdate(UpdateView):
    model = Card

class CardDelete(DeleteView):
    model = Card

我的forms.py:

from django import forms


class CardForm(forms.ModelForm):
    name = forms.CharField(max_length=80)
    mana_cost = forms.CharField(max_length=12)
    supertype = forms.CharField(max_length=30)
    keyword_1 = forms.CharField(max_length=20)
    keyword_2 = forms.CharField(max_length=20)
    keyword_3 = forms.CharField(max_length=20)
    rules_text = forms.CharField(max_length=500)
    power_toughness = forms.CharField(max_length=10)

和我的models.py:

from django import forms

class CardForm(forms.ModelForm):
    name = forms.CharField(max_length=80)
    mana_cost = forms.CharField(max_length=12)
    supertype = forms.CharField(max_length=30)
    keyword_1 = forms.CharField(max_length=20)
    keyword_2 = forms.CharField(max_length=20)
    keyword_3 = forms.CharField(max_length=20)
    rules_text = forms.CharField(max_length=500)
    power_toughness = forms.CharField(max_length=10)

我已经看到其他人发生过这种情况,但是我对它们的代码了解得不够深,无法理解如何解决我的问题,但是我感觉如此接近。

python django
1个回答
0
投票

CardCreate视图中,您已经将model用作form_class,而不是您的Form

class CardCreate(CreateView):
    model = Card
    form_class = CardForm

请注意,在UpdateView中,您忘记设置form_class。这本身不是必需的,但是您需要指定fields [Django-doc]。但是,您可以使用相同的fields

form_class
© www.soinside.com 2019 - 2024. All rights reserved.