使用ManyToManyField时如何从数据库中正确选择条目?

时间:2017-02-28 03:03:34

标签: python mysql django

我正在为自行车商店写一份申请表。我需要能够为Repairs分配许多Transaction(即平面修复)。每个维修都有名称,描述和价格。每笔交易都有一个repairs字段。对于Transaction,我有

repairs = models.ManyToManyField(Repair, blank=True)

这具有逻辑意义。但是,将有大约40多种不同类型的维修。当我为交易添加维修时,我不想每次创建新交易并添加维修时都必须创建Repair的新实例 - 我只想拥有指向特定修复的指针。 换句话说,Repair充当可能的维修清单,包含价格和说明,Transaction有一个指向这些维修清单的字段。此外,我的Transaction中的字段需要能够指定每个修复是否已完成。

我需要为Item指向的Transaction(即一个管子)做同样的事情。

我不确定如何在Django中执行此操作。我可能会过度思考它,或者我的数据库设计可能很差。

1 个答案:

答案 0 :(得分:0)

这听起来像是一个合理的设计,内置的ManyToManyField是该架构的不错选择。

就用户界面而言,如果您使用Django表单模块构建表单并接收和验证数据,我建议MultipleChoiceField可能是您选择{Repair的最佳选择。 {1}}与Transaction关联的对象。 (https://docs.djangoproject.com/en/dev/ref/forms/fields/#multiplechoicefield)。在这种情况下,您可以使用Repair方法格式过滤交易的可用__init__