Поля Django FormModel не найдены

В настоящее время шаблон генерирует только кнопку Submit без каких-либо полей ввода. Также, если я изменяю fields = "all" на fields= ["email", "name"], он сообщает мне, что эти поля не существуют.

class NewsletterSubscriber(models.Model):
    email = EmailField(required=True, label='Email')
    name = CharField(required=True, label='Name')

class SubscribeForm(forms.ModelForm):
    class Meta:
        model = NewsletterSubscriber
        fields = "__all__"

def subscribe(request):
    form = SubscribeForm()
    if request.method == 'POST':
        form = SubscribeForm(request.POST)
        if form.is_valid():
            form.save()
            # redirect to a success page
    return render(request, 'subscribe.html', {'subscribeForm': form})

<form action="{% url 'subscribe' %}" method="post">
    {% csrf_token %}
    {{ subscribeForm.as_p  }}
    <input type="submit" value="Subscribe">
</form>

Попробуйте это:

class NewsletterSubscriber(models.Model):
    email = EmailField(required=True)
    name = CharField(required=True)
class SubscribeForm(forms.ModelForm):
    class Meta:
        model = NewsletterSubscriber
        fields = ['email', 'name']
        labels = {'email': 'Email', 'name': 'Name'}

Вместо fields вы можете также использовать exclude, что позволит перечислить поля, которые вы не хотите отображать.

Все эти атрибуты вы можете поместить в класс Meta: Modelformfactory

Решено.

Неправильно:

class NewsletterSubscriber(models.Model):
    email = EmailField(required=True, label='Email')
    name = CharField(required=True, label='Name')

Правильно:

class NewsletterSubscriber(models.Model):
    email = models.EmailField(required=True, label='Email')
    name = models.CharField(required=True, label='Name')
Вернуться на верх