ModelForm没有指定Django的模型类

时间:2013-11-25 12:43:51

标签: python django

我很想知道我的forms.py中的model = User行是什么,所以我决定将其评论出来。结果是这个错误:

ModelForm has no model class specified.

并在views.py

的第45行突出显示
args['form'] = MyRegistrationForm() 

我仍然不太确定model = User如何在我的自定义用户注册表单中播放。 (我一直在关注教程)。我想知道是否有人可以简要地向我解释整个过程以及为什么需要model = User

我的猜测是该模型现在是User个对象。另外args['form'] = MyRegistrationForm()需要是模型对象,否则代码将崩溃。就我的假设而言。

我的views.py:

from django.shortcuts import render
from django.http import HttpResponseRedirect    
from django.contrib import auth                 
from django.core.context_processors import csrf 
from forms import MyRegistrationForm

def register_user(request):
    if request.method == 'POST':
        form = MyRegistrationForm(request.POST)     # create form object
        if form.is_valid():
            form.save()
            return HttpResponseRedirect('/accounts/register_success')
    args = {}
    args.update(csrf(request))
    args['form'] = MyRegistrationForm()
    print args
    return render(request, 'register.html', args)

my forms.py

from django import forms            
from django.contrib.auth.models import User   
from django.contrib.auth.forms import UserCreationForm



class MyRegistrationForm(UserCreationForm):
    email = forms.EmailField(required = True)
    first_name = forms.CharField(required = False)
    last_name = forms.CharField(required = False)
    birthday = forms.DateField(required = False)



    class Meta:
        #model = User
        fields = ('email', 'username', 'password1', 'password2', 'last_name', 'first_name', 'birthday')     # set up ordering

    def save(self,commit = True):   
        user = super(MyRegistrationForm, self).save(commit = False)
        user.email = self.cleaned_data['email']
        user.first_name = self.cleaned_data['first_name']
        user.last_name = self.cleaned_data['last_name']
        user.birthday = self.cleaned_data['birthday']


        if commit:
            user.save()

        return user

1 个答案:

答案 0 :(得分:1)

  

我仍然不太确定模特=用户如何在我的游戏中播放   自定义用户注册表。

您的表单继承自django.contrib.auth.forms.UserCreationForm ModelForm

  

我想知道是否有人可以简要向我解释这一切   过程以及为什么模型=需要用户

模型表格在此处记录:https://docs.djangoproject.com/en/1.5/topics/forms/modelforms/

作为旁注,如果您从Meta继承了表单UserCreationForm.Meta,则无需再次指定模型。

  

我的猜测是该模型现在是一个User对象。

User是一个班级。

  

此外,args ['form'] = MyRegistrationForm()需要是一个模型对象   否则代码会崩溃。就我的假设而言。

不要假设:阅读文档,然后阅读代码(记住,它是开源软件)。