如何在 Django 中将 2 个模型字段结合在一起?
Posted
技术标签:
【中文标题】如何在 Django 中将 2 个模型字段结合在一起?【英文标题】:How to unite together 2 model fields in Django? 【发布时间】:2016-05-24 02:44:50 【问题描述】:我的模型类中有 2 个字段
class A(model.Model):
field1 = models.ImageField(upload_to='path', null=True)
field2 = models.URLField(null=True)
我需要联合起来,这样如果第一个字段已满,第二个字段就无法填写。反之亦然。
我尝试使用字段 unique_together 在 A 类中创建 Meta 类:
class Meta:
unique_together = (field1, field2)
但在这种情况下,两个字段都不能为空,并且都可以为满。但我需要只有 1 个字段必须是满的。
【问题讨论】:
我不确定模型级别是否有任何东西可以强制执行此操作。为什么不在表单级别强制执行此操作? docs.djangoproject.com/en/dev/ref/forms/validation/… 目前我在视图级别执行此操作,但我想在模型级别执行此操作 【参考方案1】:在你的模型中自定义 save() 方法:
def save(self, *args, **kwargs):
if not self.field1:
self.field2 = ...
if not self.field2:
self.field1 = ...
super(A,self).save(*args,**kwargs)
【讨论】:
以上是关于如何在 Django 中将 2 个模型字段结合在一起?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 django 中将一个表单字段拆分为模型的多个字段?