[英]Validating admin site save in Django
I have the following two classes defined in models.py 我在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)
So my model allows for multiple parts, but I want the part names to be unique. 所以我的模型允许多个零件,但是我希望零件名称是唯一的。 For example, only one part with name "engine" should be allowed for a given car.
例如,对于给定的汽车,只允许使用名称为“ engine”的零件。 How do I enforce this uniqueness?
如何实施这种独特性?
Things I have looked into: 我调查过的事情:
class save()
Overriding the default save() for Car doesn't help because parts isn't updated until save is hit. 覆盖Car的默认save()并没有帮助,因为在命中保存之前部件不会更新。
class save_model()
This will not work because it always saves. 这将不起作用,因为它总是可以保存。
So what are my options for enforcing uniqueness of part names? 那么,加强零件名称唯一性的选项是什么?
UPDATED: 更新:
Although I want only one part with name engine to be associated with a car, I still want the ability to define multiple parts with name engine, of course with different values. 尽管我只希望一个带有名称引擎的零件与一辆汽车相关联,但我仍然希望能够使用名称引擎定义多个零件,当然它们具有不同的值。
So a car with can have a part (part.name=Engine and part.value=V6) and another car can have a part (part.name=Engine and part.value=V4, but a car can't have two parts that have part.name == engine. 因此,具有的汽车可以具有一部分(part.name = Engine和part.value = V6),而另一辆汽车可以具有一部分(part.name = Engine和part.value = V4,但是汽车不能具有两个部分)具有part.name ==引擎。
EDIT: 编辑:
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)
treat part_type as part type id (eg type='engine') for engines it will be unique 将part_type视为引擎的零件类型ID(例如type ='engine'),它将是唯一的
more about ForeignKey 有关ForeignKey的更多信息
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.