AttributeError: у объекта 'ModelFormOptions' нет атрибута 'private_fields' сообщение об ошибке - PullRequest
1 голос
/ 28 сентября 2019

Я не понимаю, что означает эта ошибка.Похоже, я все сделал правильно.

forms.py:

from django import forms

from django.forms import ModelForm

from .models import SignUpForm


class SignUpForm(forms.ModelForm):
    class Meta:
        model = SignUpForm
        fields = ['name', 'company', 'city', 'country', 'email', 'password']
        widgets = {
        'password': forms.PasswordInput(),
    }

Это выдаст:

AttributeError: объект ModelFormOptions имеетбез атрибута 'private_fields'

Это мои views.py

from django.shortcuts import render

# Create your views here.
from django.http import HttpResponse
from .forms import signup
from django.utils.html import format_html
from django.contrib import messages
from .models import signup

def index(request):
    return render(request, 'myapp/index.html')

def signup(request):
    if request.method == 'POST':
        register_form = signup(request.POST)
        if register_form.is_valid():
            post = register_form.save()
            message = format_html("Hi {0}, Thank you for signing up with us! See your profile <a href=''>{1}</a>".format(register_form.cleaned_data['name'], "here"))
            form = signup()
            return render(request, 'myapp/register.html', {'signup':NewForm, 'message': message})
        else:
            message = register_form.errors
            form = signup()
            return render(request, 'myapp/register.html', {'signup':form, 'message': message})

    else:
        form = signup()

    return render(request, 'myapp/register.html', {'signup':form})

1 Ответ

2 голосов
/ 28 сентября 2019

Наличие модели с именем SignUpForm - очень плохая идея по множеству причин.Обычно класс, заканчивающийся на Form, должен быть классом формы, а не классом модели.Что еще более важно, это, скорее всего, причина вашей ошибки.

В вашем views.py вы, вероятно, делаете что-то вроде этого:

from .models import SignUpForm
from .forms import SignUpForm

def some_view(request):
    if request.POST:
        form = SignUpForm(request.POST)
    else:
        form = SignUpForm(instance=SignUpForm(col1='foo', col2='bar'))

Угадайте, что?Вы только что передали экземпляр класса SignUpForm form в SignUpForm, not SignUpForm модель !

Изменитьимя вашей SignUpForm модели , и вы, скорее всего, не получите ошибок.

Если это не помогло, пожалуйста, покажите мне views.py для этой формы.

...