【问题标题】:Django from JSON format来自 JSON 格式的 Django
【发布时间】:2012-03-19 05:58:10
【问题描述】:

我尝试从 JSON 格式制作自定义 django 表单,像这样

{
    "1": ["fieldlabel1", "str", false], 
    "2": ["fieldlabel2", "str", false]
}

其中 'fieldlabel1' - 字段标签,int 或 str - 字段类型 IntegerField 或 CharField,最后一个参数 True 或 False 为字段是否必填。

FIELD_TYPES = {
    'str': forms.CharField,
    'int': forms.IntegerField,
}

    class ItemsGroup(models.Model):   
        ...
        fields = models.TextField(u'Addtional fields (JSON format)', blank=True, null=True, default=None)

        # raw_fields = { 1: (u'fieldlabel1','int', True), 2: (u'fieldlabel2','str', False) }
        def fields_form(self):
            try:
                raw_fields = json.loads(self.fields)
                fields = {}
                for key in raw_fields.keys():
                    fields['field'+str(raw_fields[key])] = FIELD_TYPES[raw_fields[key][1]](
                        label = raw_fields[key][0], required = raw_fields[key][2]
                    )

                return type('Form', (forms.Form,), fields)

            except ValueError:
                return None

在模板中,当我这样做时:{{ items_group.fields_form }},接收类 'django.forms.forms.Form',这个{{ items_group.fields_form.as_ul }} 什么也没收到。

【问题讨论】:

    标签: python django django-forms


    【解决方案1】:

    您直接使用 Form 类,您将需要创建表单的实例,例如

    klass = type('Form', (forms.Form,), fields)
    form = klass()
    return form
    

    【讨论】:

      猜你喜欢
      • 2018-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多