問題

我正在使用forms.ModelForm將我的模型連結到我的表單並執行伺服器.我收到錯誤"ModelForm has no model class specified"

這是我正在使用的程式碼

 class UserForm(forms.ModelForm):
    password=forms.CharField(widget=forms.PasswordInput())

    class meta:
        Model= User
        fields=('username' , 'email' , 'password')
 

  最佳答案

您在您的Meta類和model屬性中發生了一些錯誤:它是Meta(從大寫開始)和model(從小寫開始):

 class UserForm(forms.ModelForm):
    password=forms.CharField(widget=forms.PasswordInput())

    class Meta:
        model = User
        fields = ('username' , 'email' , 'password') 

但這還不夠.您無法透過設定屬性來設定User模型的密碼. Django雜湊密碼.您應該使用 User.set_password(..)方法[Django-doc] .您可以透過覆蓋save()方法執行此操作:

 class UserForm(forms.ModelForm):
    password=forms.CharField(widget=forms.PasswordInput())

    def save(self, commit=True):
        user = super().save(commit=False)
        user.set_password(self.cleaned_data['password'])
        if commit:
            user.save()
        return user

    class Meta:
        model = User
        fields = ('username' , 'email' , 'password') 

  相同標籤的其他問題

pythondjango