当前位置: 首页 > news >正文

设计制作公司网站计算机网络技术吃香吗

设计制作公司网站,计算机网络技术吃香吗,景安网站上传完还要怎么做,wordpress不同背景图片在Django中,我们可以通过表单的初始化参数initial来传递自定义的初始值给表单字段。如果我们想要在视图中设置表单的初始值,可以在视图中创建表单的实例时,传递一个字典给initial参数。 1、问题背景 我们遇到了这样一个问题:在使…

在Django中,我们可以通过表单的初始化参数initial来传递自定义的初始值给表单字段。如果我们想要在视图中设置表单的初始值,可以在视图中创建表单的实例时,传递一个字典给initial参数。

在这里插入图片描述

1、问题背景

我们遇到了这样一个问题:在使用 Django 表单时,我们希望将自定义表单中的值传递到视图中。然而,我们发现无法为多选选项的每个选项传递值。在渲染表单时,只有一个字符字段,而多选框中有多个选择。我们想知道是否有办法解决这个问题,以及表单集是否可以在这里提供帮助。我们对 Django 还很陌生,因此希望得到一些解释,以便更好地理解和学习。

# models.py
class StateOption(models.Model):partstate = models.ForeignKey(State)partoption = models.ForeignKey(Option)relevantoutcome = models.ManyToManyField(Outcome, through='StateOptionOutcome')class StateOptionOutcome(models.Model):stateoption = models.ForeignKey(StateOption)relevantoutcome = models.ForeignKey(Outcome)outcomevalue = models.CharField(max_length=20)# forms.py
class UpdateStateOptionWithOutcomesForm(forms.ModelForm):class Meta:model = StateOptionexclude = ['partstate', 'partoption']def __init__(self, *args, **kwargs):super(UpdateStateOptionWithOutcomesForm, self).__init__(*args, **kwargs)self.fields['relevantoutcome'] = forms.ModelMultipleChoiceField(queryset=Outcome.objects.all(), required=True, widget=forms.CheckboxSelectMultiple)self.fields['outcomevalue'] = forms.CharField(widget=forms.TextInput(attrs={'size': '30'}))# views.py
stateoption = get_object_or_404(StateOption, pk=stateoption_id)if request.method == "POST":form = UpdateStateOptionWithOutcomesForm(request.POST, instance=stateoption)if form.is_valid():cd = form.cleaned_dataoutcomevalue = cd['outcomevalue']for outcome_id in request.POST.getlist('relevantoutcome'):stateoption_outcome = StateOptionOutcome.objects.create(stateoption=stateoption, relevantoutcome_id=int(outcome_id), outcomevalue=outcomevalue) # template.html
{% for field in form %}{{ field.label }}:{{ field }}{% if field.errors %}{{ field.errors|striptags }}{% endif %}
{% endfor %}

2、解决方案

方法一:生成所需数量的字段

一种解决方案是编写一个循环来生成所需数量的字段。例如:

# forms.py
# ...outcome_qs = Outcome.objects.all()
self.fields['relevantoutcome'] = forms.ModelMultipleChoiceField(queryset=outcome_qs, required=True, widget=forms.CheckboxSelectMultiple)
for outcome in outcome_qs:# Use Outcome primary key to easily match two fields in your view.self.fields['outcomevalue_%s' % outcome.pk] = forms.CharField(widget=forms.TextInput(attrs={'size':'30'}) 

方法二:使用表单集

另一种解决方案是使用表单集。表单集允许我们创建一组类似的表单,每个表单都可以处理单个对象。在我们的例子中,我们可以创建一个表单集来处理每个 StateOptionOutcome 对象。

# forms.py
class StateOptionOutcomeForm(forms.ModelForm):class Meta:model = StateOptionOutcomefields = ['relevantoutcome', 'outcomevalue']StateOptionOutcomeFormSet = forms.formset_factory(StateOptionOutcomeForm, extra=1)# views.py
stateoption = get_object_or_404(StateOption, pk=stateoption_id)if request.method == "POST":formset = StateOptionOutcomeFormSet(request.POST)if formset.is_valid():for form in formset:stateoption_outcome = StateOptionOutcome.objects.create(stateoption=stateoption, **form.cleaned_data)

使用表单集的好处是,我们可以轻松地处理多个对象,而且代码也更加简洁。

http://www.yayakq.cn/news/479638/

相关文章:

  • 建设厅网站企业诚信分值网络新技术有哪些
  • 游戏网站建设赚钱wordpress表单购买
  • 凡科平台网站怎么建设最近军事新闻热点大事件
  • 论坛网站建设模板网站群建设模板迁移原站迁移pc
  • 网站建设项目建议书莱芜金点子最新招聘平台
  • 怎么看网站有没有做301跳转网站建设合同书范本
  • 南京的网站建设公司哪家好光明附近网站建设公司
  • 哈尔滨网站设计公司地址想要做网站
  • 自己做网站 赚钱绿色家园网站怎么做
  • 最好的网站设计公discuz主题
  • 东莞微网站建设服务商免费在线咨询软件
  • 外贸网站制作价格表上海网站建设中心
  • 甘肃 网站备案只有一个人网站开发
  • 郑州网站建设技术方案诸暨营销型网站设计
  • 南昌成都网站建设方案泰安房产网0538
  • 互联网站开发管理文档麒麟seo软件
  • 初学者拟建网站网站上报名系统怎么做
  • 淘宝网作图做网站货源一件代发从哪里找
  • 中小企业网站建设与推广品牌营销论文框架
  • 做电商网站报价雷州手机网站建设公司
  • 网站程序上传WordPress中文名字叫什么
  • 网站默认图wordpress影视源码
  • 福州做网站销售公司得物app下载官方版
  • 网站软文是什么第一次做网站时是怎样的心情
  • 深圳专业网站设计公司价格md短视频传媒免费版怎么下载
  • 襄阳网站建设企业软件开发工程师证书图片
  • 电子商务网站如何推广led论坛网站建设
  • 建一个免费网站的流程网站建设公司渠道
  • 网站 授权书浙江网站建设品牌设计
  • 实木餐桌椅移动网站建设门户网站建设总结