0

如何建立这样的关系:

想象一个餐厅。他们的数据表中有一个用于食谱,一个用于配料。还有一个,包含晚餐、午餐、早餐、甜点、汤等食物类别。我们将其命名为 cat_food。

厨师想使用 cat_food 对食谱和配料进行排序。例如,在所有其他列中,从 recipes 到 cat_food 存在“ManyToOne”关系。所以一个食谱有一个类别,一个类别有几个食谱。

但厨师也想以这种方式对食材进行分类。在这里,我们将有一个“多对多”的关系,而我们可以在甜点食谱中使用一种成分,就像在晚餐或汤食谱中一样。

一种解决方案是为自己的食谱和配料创建一个 cat_food 表。但是如何创建 cat_food 表,它存储食谱或成分?(取决于给定的内容)

我的想法是使用中间模型并使用字段选项“blank=True”和“null=True”设置“foreignKeys”。但我对此并不满意。从长远来看,它是否可能会导致一些数据库问题?有没有更优雅的方法来处理这种情况?

4

2 回答 2

0

恕我直言,您所说的标准关系、外键和多对多似乎是最好的;因为您可以使用合适的字段管理每个项目(配方、成分、类别),并且 django 非常支持它们的链接参考,因此考虑它们的关系进行查询变得非常容易。

另外,如果您想要一个带有额外字段的自定义 M2M 表,您可以使用through attibute 构建自己。

于 2016-04-02T14:41:13.013 回答
0

我不确定这是否是您正在寻找的,但也许您可以为您的两个不同表的每个类别创建布尔值?

例如,如果您的厨师有“草莓”项目,而您的不同类别是晚餐、午餐、早餐、甜点和汤。然后您可以检查该食物可能进入的类别。例如:早餐 == 真,甜点 == 真,汤 == 假。以及其他类别。

如果你同时做这两个,那么你可以在你的模板中同时拥有食谱和配料,并有按钮或下拉菜单来过滤结果。

于 2016-04-01T17:36:19.097 回答