【问题标题】:How to create dynamic form using JSONSchemaField based on ID passed from the form request in Django?如何根据从 Django 中的表单请求传递的 ID 使用 JSONSchemaField 创建动态表单?
【发布时间】:2021-11-15 21:24:16
【问题描述】:

如果我在 forms.py 中将 ID 作为静态值提供,则表单会正确呈现,当我使用从表单调用中获得的 ID 时,它不会正确呈现

views.py

def assetAddJsonView(request,pk):
    form = AssetAddjsonForm(id = pk)
    context = {
        'form': form
    }
    return render(request, 'asset_add_json.html', context)

forms.py

from django_jsonforms.forms import JSONSchemaField

class AssetAddjsonForm(Form):
    def __init__(self, *args, **kwargs):
       self.request = kwargs.pop('id')
       super(AssetAddjsonForm, self).__init__(*args, **kwargs)

    type_json_schema = Types.objects.values_list('details').get(id=1)   # details contains schema object
    type_json_schema = list(type_json_schema)[0]    
    add_asset = JSONSchemaField(schema = type_json_schema, options = options)

我想传递我在 self.request

中得到的值,而不是传递 id=1

我参考了这个链接 Django app generating forms dynamically from JSON?

提前致谢

【问题讨论】:

    标签: django forms django-forms jsonschema python-jsonschema


    【解决方案1】:

    我找到了问题的答案 这是我在formclass中更改的代码

    def assetAddJsonView(request,pk):
        def __init__(self, *args, **kwargs):
            ids = kwargs.pop('id')
            super(AssetAddjsonForm, self).__init__(*args, **kwargs)
            type_json_schema = Types.objects.values_list('details').get(id=ids)
            self.fields['add_asset'] = JSONSchemaField(schema=list(type_json_schema)[0], options = options)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-31
      • 1970-01-01
      • 2016-11-11
      • 2012-05-21
      • 2013-09-17
      • 2012-11-08
      相关资源
      最近更新 更多