全部,
我缺少有关 Django 的 ForeingKeys 与 ManyToManyFields 基础模型的一些基本信息。
假设我正在构建一个关于汽车的应用程序。我可能有以下课程:
class Car(models.Model):
carName = models.CharField()
class Manufacturer(models.Model):
manufacturerName = models.CharField()
class Wheel(models.Model):
radius = models.IntegerField()
到现在为止还挺好。现在这些类之间有一些关系。一辆汽车有一个制造商并有(四个)轮胎。但从概念上讲,还是有区别的。制造商通过“聚合”关联;一个制造商可以与多辆汽车相关联;删除 Car 实例不应导致该汽车的制造商也被删除。轮子通过“组合”关联;与汽车相关的每四个车轮与该汽车相关联,并且仅与该汽车相关联;删除汽车,车轮也应删除。
所以,直觉上,这意味着我应该做以下事情:
class Car(models.Model):
carName = models.CharField()
manufacturer = models.ManyToManyField("Manufacturer")
wheels = models.ForeignKey("Wheel")
最终,我想使用 inlineformset_factories 以便用户可以同时填写有关汽车、制造商和车轮的详细信息。像这样的东西:
class CarForm(ModelForm):
class Meta:
model = Car
class ManufacturerForm(ModelForm):
class Meta:
model = Manufacturer
class WheelForm(ModelForm):
class Meta:
model = Wheel
Manufacturer_formset = inlineformset_factory(Car,Manufacturer,formset=ManufacturerForm)
Wheel_formset = inlineformset_factory(Car,Wheel,formset=WheelForm)
但我发现的大多数文档都表明 ForiegnKey 应该从 Wheel 转到 Car。这对我来说似乎是倒退的,因为 Wheel_formset 然后会向用户显示 Car(“carName”)而不是 Wheel(“radius”)的所有字段。
只是输入这个问题的行为让我感到困惑。任何人都可以阐明我如何构建一个包含所有汽车字段的表单,然后是所有制造商字段,然后是所有车轮字段。
谢谢