2
關於上下文,這裏是一個菜單系統。Django 1.8:如何確保模型中的兩個域,至少一個或唯一一個必須符合條件?
class Menu(models.Model):
...
class Link(models.Model):
...
class MenuItem(models.Model):
menu = models.ForeignKey(Menu)
submenu = models.ForeignKey(Menu, related_name='submenu', blank=True, null=True)
link = models.ForeignKey(Link, blank=True, null=True)
position = models.IntegerField()
我有兩個結果我在尋找實現:
- 至少一個子菜單和鏈接不能爲空(子菜單標題可以有一個鏈接)
- 只有一個子菜單和鏈接必須爲空(子菜單標題不能有鏈接)
任何高級驗證對我來說都是新的,因此代碼示例會非常有幫助。
在這個例子中,數據將僅通過Django管理
我沒有試過這個,所以我不會讓它成爲答案,但也許你可以使用多表繼承?如果你同時使'Menu'和'Link'子類爲'MenuItem',那麼'MenuItem'將有兩個一對一關係,其中只有一個非空。 – Duncan
謝謝,這聽起來像獲得第二個結果的潛在方式,但不會覆蓋第一個結果。 – StringsOnFire