为了账号安全,请及时绑定邮箱和手机立即绑定

新 Django 版本中的 Django CharField 独特参数

新 Django 版本中的 Django CharField 独特参数

慕慕森 2023-09-05 19:49:33
在我的 forms.py 文件中,我使用 CharField。我在书中读到了有关 CharField 的唯一参数:它说如果唯一参数 = True,则该模型的 CharField 不能重复。书中介绍了Django 2.1版本。目前,争论者的名字已被更改。我这么认为是因为 Django 显示了错误标志TypeError: __init__() got an unexpected keyword argument 'unique'
查看完整描述

1 回答

?
蓝山帝景

TA贡献1843条经验 获得超7个赞

要验证表单中的唯一性,您可以在保存表单之前使用表单clean_fieldname()方法进行额外的数据库查询。


from django import forms

from django.core.exceptions import ValidationError


class MyForm(forms.Form):

    username = forms.CharField()


    def clean_username(self):

        if MyModel.objects.filter(username=self.cleaned_data['username'])\

                .exists():

            raise ValidatioError('already exists')

或者如果它应该是ModelForm:


from django import forms

from django.core.exceptions import ValidationError

from .models import MyModel

 

class MyModelForm(forms.ModelForm):

    class Meta:

        model = MyModel

        fields = ['username', ]


    def clean_username(self):

        if self._meta.model.objects\

                .filter(username=self.cleaned_data['username'])\

                .exists():

            raise ValidatioError('already exists')


查看完整回答
反对 回复 2023-09-05
  • 1 回答
  • 0 关注
  • 128 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信