Django CharField TypeError: __init__() 得到了一个意外的关键字参数“empty_value”
Posted
技术标签:
【中文标题】Django CharField TypeError: __init__() 得到了一个意外的关键字参数“empty_value”【英文标题】:Django CharField TypeError: __init__() got an unexpected keyword argument 'empty_value' 【发布时间】:2019-10-11 15:39:13 【问题描述】:Django 建议我可以为 CharField 设置 empty_value
:https://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().init(*args, **kwargs) TypeError: init() 得到了一个意外的关键字参数“empty_value”
原因是因为我想在包含my_field
等字段的模型上设置一个unique_together
,行为如下:
my_field
为NULL,我希望unique_together
子句始终允许其他组合,因为NULL != NULL in SQL。
如果 my_field
不为 NULL,我希望 unique_together
子句针对其他字段检查唯一性。
我不希望验证不是数据库验证,例如 clean
或 validate_my_field
方法或类似方法。
【问题讨论】:
该链接用于 Django 表单字段,而不是模型字段 【参考方案1】:您尝试将forms.CharField
用作没有empty_value
的models.CharField
。对于需要使用default
field的模型。
这段代码在哪个文件中?
如果在models.py
(您定义模型)中,则使用default
而不是empty_value
。
如果在forms.py
(您定义表单)中,则导入django.forms
,而不是django.db.models
,然后您可以使用:
my_field = forms.CharField(max_length=80, required=False, empty_value=None)
【讨论】:
以上是关于Django CharField TypeError: __init__() 得到了一个意外的关键字参数“empty_value”的主要内容,如果未能解决你的问题,请参考以下文章
Django-Postgres:CharField 的长度作为主键
Django-Admin:作为 TextArea 的 CharField