【发布时间】:2022-01-13 00:15:27
【问题描述】:
让我们从模型开始:
class Brand(models.Model):
id = models.UUIDField(primary_key=True
name = models.CharField(max_length=255)
class ProductLine(models.Model):
id = models.UUIDField(primary_key=True
name = models.CharField(max_length=255)
brand = models.ForeignKey(Brand, on_delete=models.CASCADE)
class Product(models.Model):
id = models.UUIDField(primary_key=True
name = models.CharField(max_length=255)
brand = models.ForeignKey(Brand, on_delete=models.CASCADE)
product_line = models.ForeignKey(ProductLine, on_delete=models.CASCADE, blank=True, null=True)
所以我们有品牌。 品牌可以有 0 个或多个 product_lines。 一个产品总是有一个品牌,也可能在一个产品线中。
我的目标是将产品的 product_line 限制为与产品本身具有相同的品牌。
例如:
- 品牌 A 有 2 个产品线:Premium、Standard
- 品牌 B 有 1 个产品线:白金
假设我们有一个属于品牌 B 的产品。我想让 product_line 为 null 或 Platinum,但不允许属于品牌 A(Premium 或 Standard)的 product_line 之一
我不确定如何实现这一点,或者即使这应该发生在序列化程序、模型级别或其他地方。经验丰富的 django-ers 的任何帮助将不胜感激!
【问题讨论】:
标签: django django-models django-rest-framework