python - django ModelChoiceField,to_field_name

标签 python django django-models django-forms

当我编译我的代码时,返回了这条错误消息:

'ModelChoiceField' object has no attribute 'to_field_name'

ModelChoiceFiled 在“学校代码”字段中。

我已经输入了 to_field_name。

class UserRegister(forms.ModelForm):
    class Meta:
        mstSchool = MstSchool.objects.filter(use_yn__exact="Y").order_by("code")
        
        model = MstUser
        fields = [ 'name', 'id', 'password', 'school_code']
        widgets = {
            'id' : forms.TextInput(attrs={'placeholder' : 'User ID', 'class':'form-control'}),
            'password' : forms.TextInput(attrs={'placeholder' : 'password', 'class':'form-control school-password', 'type':'password'}),
            'name' : forms.TextInput(attrs={'placeholder' : 'name', 'class':'form-control school-name'}),
            'school_code' : forms.ModelChoiceField(queryset=MstSchool.objects.filter(use_yn__exact="Y").order_by("code"), empty_label="(Nothing)", to_field_name="school_code")
        }

'ModelChoiceField' object has no attribute 'to_field_name'

最佳答案

您混淆了字段和小部件。 ModelChoiceField 不是小部件,而是表单域:

class UserRegister(forms.ModelForm):

    <b>school_code =</b> forms.ModelChoiceField(queryset=MstSchool.objects.filter(use_yn__exact="Y").order_by("code"), empty_label="(Nothing)")

    class Meta:
        model = MstUser
        fields = [ 'name', 'id', 'password', 'school_code']
        widgets = {
            'id' : forms.TextInput(attrs={'placeholder' : 'User ID', 'class':'form-control'}),
            'password' : forms.TextInput(attrs={'placeholder' : 'password', 'class':'form-control school-password', 'type':'password'}),
            'name' : forms.TextInput(attrs={'placeholder' : 'name', 'class':'form-control school-name'}),
        }

不要通过ModelForm 设置idpassword。密码应该被散列,通常是 set_password method [Django-doc]用于此目的。

关于python - django ModelChoiceField,to_field_name,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57688099/

相关文章:

python - 使用棉花糖模式过滤 sqlalchemy 表更新

python - 在字符串中查找字符串并将其保存到 BioPython 上的文件中

django - 必须是 django 实例

django - 工厂男孩 : passing model instances for a RelatedFactory

python - 处理基于其他字段的 Django 模型字段的要求

python - 如何在 Django 中自定义 related_name 参数

python - 分布式状态

python - 删除 Pandas 数据框中包含特定值的列和行

python - 在 Django 中使用临时表连接替代 `IN`

python - 在 Django rest api 中查询最小和最大大小