[英]Django table with specific relation to two or more other tables
如何建立这样的关系:
想象一家餐厅。 在他们的数据表中,有一个是配方的,一个是成分的。 还有另一种,其中包含各种食物,例如晚餐,午餐,早餐,甜点,汤。 我们将其命名为cat_food。
厨师希望使用cat_food对食谱和食材进行分类。 例如,所有其他列之间都有一个从食谱到cat_food的“ ManyToOne”关系。 因此,一个配方具有一个类别,而一个类别具有多个配方。
但是厨师也想用这种方式对食材进行分类。 在这里,我们将具有“多对多”的关系,而我们可以在甜点食谱中使用一种成分,就像在晚餐或汤食谱中一样。
一种解决方案是为自己的配方和配料创建cat_food表。 但是,如何创建存储食谱或配料的cat_food表?(取决于给出的内容)
我的想法是使用中间模型,并使用字段选项“ blank = True”和“ null = True”设置“ foreignKeys”。 但是我对此不满意。 从长远来看,是否有可能导致某些数据库问题? 有没有更优雅的方式来处理这种情况?
我不确定这是否是您要寻找的东西,但是也许您可以为两个不同的表的每个类别创建布尔值?
例如,如果您的厨师有“草莓”项目,而您的不同类别是晚餐,午餐,早餐,甜点和汤。 然后,您可以检查该食物可能进入的类别。 例如:早餐==真,甜点==真,汤==假。 其余的类别继续。
如果您同时进行这两种操作,则可以使其同时在模板中既包含配方又包含成分,并具有按钮或下拉菜单以过滤结果。
恕我直言,标准关系,外键和您所说的多对多似乎是最好的; 因为您可以使用适当的字段来管理每个项目(配方,成分,类别),并且django很好地支持了链接的参考,所以考虑它们之间的关系进行查询变得非常容易。
另外,如果您想要带有额外字段的自定义M2M表,则可以通过 attibute使用自己来构建。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.