我有以下型号:
class PotentialUser(models.Model):
pass
class Lead(models.Model):
class Meta:
db_table = 'leads'
user = models.ForeignKey(to=User, null=True, unique=True)
potential_user = models.ForeignKey(to=PotentialUser, null=True, unique=True)
我想在null
字段和user
字段中允许potential_user
,但不允许null
一起应用于两个字段。我该如何实现?
在模型集Meta.unique_together
中,我只有一个主意,并用null
user
和null
potential_user
创建一条线索。但是有更好的方法吗?
答案 0 :(得分:0)
我刚刚添加了以下迁移:
class Migration(migrations.Migration):
dependencies = [
('core', '0001_initial'),
]
operations = [
migrations.RunSQL(
sql='ALTER TABLE leads ADD CONSTRAINT "leads_both_not_null" CHECK (user_id IS NOT NULL OR potential_user_id IS NOT NULL)',
reverse_sql='ALTER TABLE core_example DROP CONSTRAINT "leads_both_not_null"'
)
]