postgresql 如何在Django模型中存储元组列表[duplicate]

kx1ctssn  于 2022-11-04  发布在  PostgreSQL
关注(0)|答案(1)|浏览(124)

此问题在此处已有答案

How to store list of tuples in Django model?(1个答案)
昨天关门了。
我正在Django 4中开发一个食物配方数据库Web应用,希望在给定的模型中存储配方所需的未知数量的配料。配料由名称、体积和度量单位来描述-例如:糖400克,鸡蛋2个,等等。我用的是PostgreSQL
在给定模型中存储此类数据,同时保留查询数据或对成分体积进行算术运算的能力的最佳实践是什么?
到目前为止,我已经找到了两种选择,但由于我对Web开发非常陌生,我不知道它们是否可行:
1.为成分创建单独的模型,并使用多对多关系连接模型,但这将为每个示例创建一个新对象,例如体积不同的示例
1.只需使用TextField(),然后使用一些疯狂的正则表达式来分离成分
考虑到我是web开发的新手,我不知道什么是最合适的选择。
谢谢

huwehgph

huwehgph1#

1.为配料创建单独的模型并使用多对多关系...
当您要依成分筛选食谱时,多对多相关性会很有用。例如,列出所有含有蛋或糖的食谱。
如果你想要这个特性,那么你就必须使用多对多字段。
...但这将为每个示例创建一个新对象,例如,卷是不同的
多对多字段支持through参数,该参数允许您传递中间模型以保存额外数据,从而避免此问题。请参阅文档中多对多关系的额外字段。
1.只需使用TextField(),然后使用一些疯狂的正则表达式来分离成分
如果您不想按成分进行筛选,使用JSONFieldManyToManyFieldTextField更好。这将允许您以结构化格式存储数据,例如:

ingredients = [
    {'name': 'Sugar', 'qty': '400 grams'},
    {'name': 'Egg', 'qty': '1'},
    ...
]

P.S.:如果你打算使用JSONField,也可以看看我创建的一个名为django-jsonform的库,它对于在admin中创建用户友好的JSON编辑表单非常有用。

相关问题