[英]Express multiple one-to-many and one-to-one relationship in Django
我正在設計一個交付應用程序。 它具有用戶,地址和商店模型。 我有以下要求:
模型如下:
class User(AbstractBaseUser):
...
class Address(models.Model):
...
class Store(models.Model):
...
第一個需求可以顯示為:
user = models.ForeignKey(User, on_delete=models.CASCADE)
第二個需求可以顯示為(在地址模型中為):
store = models.OneToOneField(Store, on_delete=models.CASCADE)
同樣,第二個需求可以顯示為(在商店模型中為):
address = models.OneToOneField(Address, on_delete=models.CASCADE)
代表第三項要求的最佳方法是什么。 在這種情況下,如何處理序列化?
謝謝。
如果您以地址模型為中心或存在問題,可以在驗證期間處理這種情況:
class Address(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, null=True)
store = models.OneToOneField(Store, on_delete=models.CASCADE, null=True)
def clean(self):
if self.user != None and self.store != None:
raise ValidationError('Address must belong EITHER to user OR store, not both', code='invalid')
如果兩個字段均為None
則您可能還想處理這種情況。 注意,在數據庫級別,兩個字段都必須允許為null=True
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.