如何在模型中使用动态字段?

时间:2012-10-08 07:32:24

标签: django django-models

我想在django中使用动态字段意味着我有一个模型,其中一个模型在另一个模型中指定。

我希望我能通过例子向你解释。

我有一个型号名称产品,每次上传新产品时,我们必须为其设置一些属性,并在第二个表中指定属性这个产品型号的一个领域是动态的,取决于第二个表。如果我在其他表中选择“x”,那么此字段显示在此处,如果我选择“y”,那么这将显示在此处,因此基于该产品ID和属性ID,我可以在第3个表中指定属性值,以便将来我可以获取指定产品的价值。

我已经尝试了很多,但我不知道如何在django中使用动态字段,所以任何人都可以告诉我如何做到这一点。

谢谢

1 个答案:

答案 0 :(得分:1)

我建议你为此目的使用django-json-field(https://github.com/derek-schaefer/django-json-field)。它只在数据库中使用一个Text字段,但您可以像在python对象中一样访问json中的对象:

json = JSONField() #in your model
json = "{'attributes':{'colour':'blue','size':'2'}, 'image-height':'200px'}" # in your db
{{product.json.attributes}} #in your template
product.json.attributes #in your views

这是制作许多'django'字段的好方法,同时只将其存储在db中的一个Text字段中。

这种方法的缺点是您无法使用数据库有效地搜索字段,但如果您有几十种产品,则可以在视图中通过python进行过滤。