鉴于这些模型,我如何防止将 FinancialTransaction 分配给多个事物?
换句话说,如果 ThingOne 具有 FinancialTransaction,则 ThingTwo 或 ThingThree 不能与它有关系。
如何在管理员中强制执行此操作?我当然可以使用 Inlines 在 SomeThing 管理员中获取 Thing*,但这允许我设置多个 Thing*。
我的第一个倾向是我的建模是错误的,所有事物都应该由一个模型表示,但它们绝对是不同类型的事物。
from django.db import models
class ThingOne(models.Model):
name = models.CharField(max_length=20)
some_things = models.ForeignKey('FinancialTransaction', blank = True, null = True)
class ThingTwo(models.Model):
name = models.CharField(max_length=20)
some_things = models.ForeignKey('FinancialTransaction', blank = True, null = True)
thingone = models.ForeignKey(ThingOne)
class ThingThree(models.Model):
name = models.CharField(max_length=20)
some_things = models.ForeignKey('FinancialTransaction', blank = True, null = True)
thingtwo = models.ForeignKey(ThingTwo)
class FinancialTransaction(models.Model):
value = models.IntegerField()