【问题标题】:Django model form ImproperlyConfigured errorDjango 模型表单 ImproperlyConfigured 错误
【发布时间】:2017-07-26 17:45:20
【问题描述】:

配置不当:创建没有任何“字段”的 ModelForm 属性或“排除”属性被禁止;形式 CustomUserChangeForm 需要更新。

from django.contrib.auth.forms import UserCreationForm, UserChangeForm
from login1.models import CustomUser


class CustomUserCreationForm(UserCreationForm):
    def __init__(self, *args, **kargs):
        super(CustomUserCreationForm, self).__init__(*args, **kargs)
        del self.fields['username']

    class Meta:
       model = CustomUser
       fields = ("email",)

class CustomUserChangeForm(UserChangeForm):
    def __init__(self, *args, **kargs):
        super(CustomUserChangeForm, self).__init__(*args, **kargs)
        del self.fields['username']

    class Meta:
        model = CustomUser

【问题讨论】:

  • 我可以检查错误吗?
  • 该错误似乎准确地告诉您出了什么问题以及要更改什么。它有什么令人困惑的地方?

标签: python django forms class


【解决方案1】:

当您创建一个 ModelForm 时,它希望您指定要在模板中显示的字段,即)当您在 html 中执行 {{ form }} 时,您希望某些字段正确呈现?所以在这种情况下,你已经指定了 fields 属性。

class CustomUserChangeForm(UserChangeForm):      
    def __init__(self, *args, **kargs):
        super(CustomUserChangeForm, self).__init__(*args, **kargs)       
        del self.fields['username']

    class Meta:
        model = CustomUser
        fields = '__all__' or ['your_field']           

【讨论】:

    【解决方案2】:

    您需要在CustomUserChangeForm.Meta 类中定义表单中应包含哪些模型字段:

    class CustomUserChangeForm(UserChangeForm):
        def __init__(self, *args, **kargs):
            super(CustomUserChangeForm, self).__init__(*args, **kargs)
            del self.fields['username']
    
        class Meta:
            model = CustomUser
            fields = '__all__'  #<-- add this or name fields you want to include as sequence
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-30
      • 1970-01-01
      • 2018-08-15
      • 1970-01-01
      • 1970-01-01
      • 2012-01-09
      • 2015-03-15
      • 1970-01-01
      相关资源
      最近更新 更多