是否可以在JSONField模式中包含ForeignKey?我还能怎么做呢?

时间:2019-07-21 16:10:29

标签: json django django-models django-forms foreign-keys

我正在Django中构建一个应用程序,允许用户构建自己的表单并有效地自定义动态模型。

经过大量研究,我决定通过Django,PostgreSQL和JSONFields来实现这一点,其中一个模型保存模式,另一个模型保存记录数据:

class = Template(models.Model):
    schema = JSONField(null=True) # Schema for the form/model

class = DynamicModel(models.Model):
    data = JSONField(null=True) # Corresponding data for the form/model
    template =  models.ForeignKey(Template, null=True, 
                    blank=False, on_delete=models.SET_NULL)

这意味着用户可以定义自己的模型模板,而我可以在另一个模型中使用该模板保存不同的记录。

这个想法是解析template.schema JSONField以使用jQuery显示可编辑表单,并将输出存储为dynamicmodel.data JSONField。验证在客户端进行。

enter image description here

但是,如果我要允许用户在其模型中包含ForeignKey查找,则会带来缺点。例如,假设他们想添加一个选择框,以提供customer.id类中来自不同Customer(models.Model)的选择。

如果不将ForeignKey直接硬编码到DynamicModel类中(这会破坏练习的重点),您能想到我可以实现此目标的方法吗?

0 个答案:

没有答案