我有许多Django模型中的非必填字段。是否有替代方案来避免使用null=True
和blank=True
?是否有类似于blank_fields=('email','image',)
和null_fields=('email','image')
这样的东西?
我有许多Django模型中的非必填字段。是否有替代方案来避免使用null=True
和blank=True
?是否有类似于blank_fields=('email','image',)
和null_fields=('email','image')
这样的东西?
默认情况下Django没有提供任何属性。这些属性是针对每个字段定义的,而不是模型级别的。您可以使用unique_together
、index_together
等定义来组合不同字段的模型级定义。
一种方法是通过子类化字段并提供默认定义:
class CustomIntegerField(models.IntegerField):
def __init__(self, *args, **kwargs):
kwargs['blank'] = True
kwargs['null'] = True
super(CustomIntegerField, self).__init__(**kwargs)
class Test(models.Model):
cus = CustomIntegerField(default=0)
迁移:
class Migration(migrations.Migration):
dependencies = [ ]
operations = [
migrations.CreateModel(
name='Test',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('cus', test.models.CustomIntegerField(blank=True, default=0, null=True)),
],
),
]
CharField
吗?如果是,那么您应该重新考虑仅使用blank=True
。您的想法可能看起来很好,但实际上并没有带来优势。这只是将约束规范外包给另一个应用程序部分,使您的代码不太可读。 - cezar