【问题标题】:Populate Python object with Django Form使用 Django 表单填充 Python 对象
【发布时间】:2021-11-19 09:57:12
【问题描述】:

我正在尝试使用 Django 表单来填充 Python 对象(不是 Django 模型)。 我觉得我只能:

  • 构建一个简单的表单并手动填充
  • 使用 Django 模型作为代理

额外的困难是表单发送 GET 请求

班级

class Search:
      
    def __init__(self):
        self.min_area = 0
        self.max_area = 999

表格

from django import forms


class MainSearchForm(forms.Form):

    min_area = forms.IntegerField(label="Minimum", required=False)
    max_area = forms.IntegerField(label="Maximum", required=False)

景色

from django.http import HttpResponse
from django.template import loader
from front.forms.search.main import MainSearchForm
from front.gears.search import Search


def main(request):

    search = Search()
    form = MainSearchForm(request.GET, {})

    # manual populating i want to avoid
    if form.has_changed() and form.is_valid():
        search.min_area = form.cleaned_data['min_area']
        search.max_area = form.cleaned_data['max_area']

    tpl = loader.get_template('front/search/main.html')
    ctx = {
        'form': form,
        'search': search
    }

    return HttpResponse(tpl.render(ctx, request))

目前,我在视图中手动填充,但我很确定有更好的方法来做到这一点。 我是否遗漏了部分文档?

【问题讨论】:

  • 你没有对你的Search对象做任何事情吗?
  • 现在,我什么都不做。在进一步研究之前,我仍在试图弄清楚这个人口问题

标签: python django django-forms


【解决方案1】:

你可以使用setattr:

for key in form.cleaned_data:
    setattr(search, key, form.cleaned_data[key])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-12
    • 2015-11-19
    • 2016-06-27
    • 1970-01-01
    • 2017-02-22
    • 2014-10-11
    • 2012-07-20
    • 2019-03-06
    相关资源
    最近更新 更多