8
我有一些組織成類別的foos。對於每個類別,我希望能夠選擇一個優勝者foo。Django - 將選擇的範圍限制在取決於實例的東西
因此,我有模型看起來像這樣:
class Category(models.Model):
name = models.CharField(max_length=30)
# More fields...
winner = models.ManyToManyField(
'Foo',
related_name='winner'
)
class Foo(models.Model):
name = models.CharField(max_length=30)
# More fields...
category = models.ForeignKey(
Category,
related_name='category'
)
(之所以winner
是ManyToManyField
是一個FOO可能屬於幾個類別,而在單一品類可能有不止一個)
我想強加一個自然約束條件,即只有屬於該類別的某個類別的foo才能贏得類別。最合理的做法似乎是使用limit_choices_to
參數,但在我看來,根據模型的當前實例限制選擇是不可能的。
我也許能夠在給定的形式強加此約束,但我想避免這種情況的原因有兩個:
- 約束自然生活在模型級別。這是一個特別的關係,應始終兩個相關模型
- 贏家的選擇將在管理進行,我想,以避免自定義管理之間保持形成
有任何方式在Django中強加這個約束?