Django CharField TypeError:__init __()获得了意外的关键字参数'empty_value'

时间:2019-10-11 15:39:13

标签: django django-models django-migrations

Django建议我可以为CharField设置empty_valuehttps://docs.djangoproject.com/en/2.2/ref/forms/fields/#django.forms.CharField.empty_value

我正试图从以下位置更改字段:

my_field = models.CharField(max_length=80, blank=True)

收件人:

my_field = models.CharField(max_length=80, blank=True, null=True, empty_value=None)

尝试创建迁移时出现此错误:

  

文件“ /Virtualenv/python3.7/site-packages/django/db/models/fields/init.py”,第1039行, init       super()。初始化(* args,** kwargs)   TypeError: init ()得到了意外的关键字参数'empty_value'

原因是因为我想在包含unique_together和其他字段的模型上设置my_field,具有以下行为:

  • 如果my_field为NULL,我希望unique_together子句始终允许其他组合,因为NULL != NULL in SQL
  • 如果my_field不为NULL,我希望unique_together子句检查其他字段的唯一性。

我不希望使用非cleanvalidate_my_field方法或类似方法的数据库验证。

1 个答案:

答案 0 :(得分:1)

您尝试将forms.CharField用作没有models.CharField的{​​{1}}。对于模型,您需要使用default field

此代码在哪个文件中?

如果在empty_value(您定义模型)中,请使用models.py代替default

如果使用empty_value(您定义表单),则导入forms.py,而不是django.forms,然后可以使用:

django.db.models