我在models.py
中定义了以下两个类class Part(models.Model):
name = models.CharField(max_length=32)
value = models.CharField(max_length=32)
class Car(models.Model):
name = models.CharField(max_length=32)
parts = models.ManyToManyField(Part)
所以我的模型允许多个部分,但我希望部件名称是唯一的。例如,只有一个名为" engine"应该允许给定的汽车。如何强制执行此独特性?
我已经研究过的事情:
class save()
覆盖Car的默认save()没有帮助,因为在保存命中之前,部件不会更新。
class save_model()
这不起作用,因为它总是保存。
那么我有哪些选项可以强制执行部件名称的唯一性?
更新:
虽然我只希望将一个带有名称引擎的部件与汽车相关联,但我仍然希望能够使用名称引擎定义多个部件,当然还有不同的值。
所以一辆车可以有一个零件(part.name = Engine和part.value = V6)而另一辆车可以有一个零件(part.name = Engine和part.value = V4,但一辆车可以&#39 ; t有两个部分有part.name == engine。
答案 0 :(得分:0)
修改强>
class Part(models.Model):
name = models.CharField(max_length=32)
value = models.CharField(max_length=32)
class CarPart(models.Model):
car = models.ForeignKey(Car)
part_type = models.CharField(max_length=32, unique=true)
part = models.ForeignKey(Part)
class Car(models.Model):
name = models.CharField(max_length=32)
将part_type视为发动机的零件类型ID(例如type ='engine'),它将是唯一的
更多关于ForeignKey