- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Django 1.4 并且我正在为 Formsets 苦苦挣扎。我已经阅读了文档和很多 SO 问题。我越来越不知道它们是如何工作的。
- Fomsets 应该像这样配置/声明吗?
我是如何在 forms.py 和 views.py 中设置表单集的。
forms.py:(我已经声明了一个forms.Form)
class BicycleAdItemKindPropertyValueForm(forms.Form):
bicycleaditemkindpropertyvalue = forms.ChoiceField()
def submit_ad_view(request):
# This class is used to make empty formset forms required
class BicycleAdItemKindPropertyValueFormSet(BaseFormSet):
def __init__(self, *args, **kwargs):
super(BicycleAdItemKindPropertyValueFormSet, self).__init__(*args, **kwargs)
for form in self.forms:
form.empty_permitted = False
def clean(self):
pdb.set_trace()
for form in self.forms:
None
#form.fields['bicycleaditemkindpropertyvalue']
formsetBicycleAdItemKindPropertyValue = formset_factory(BicycleAdItemKindPropertyValueForm, formset=BicycleAdItemKindPropertyValueFormSet)
if request.method == 'POST':
model_main = Main()
model_main.section = Section.objects.get(pk=request.POST['section'])
model_main.user = request.user
model_bicyclead = BicycleAd()
model_bicyclead.bicycleadtype = BicycleAdType.objects.get(pk=2) #1-Ad Link, 2-Ad Insite. Em principio ficara pre-definido
model_bicyclead.bicycleaditemkind = BicycleAdItemKind.objects.get(pk=4)
model_bicyclead.bicycleadcondition = BicycleAdCondition.objects.get(pk=2)
model_bicyclead.city = GeonamesLocal.objects.get(pk=4803854)
# Build the forms
form_main = MainForm(request.POST, instance = model_main)
form_bicyclead = BicycleAdForm(request.POST, instance = model_bicyclead)
form_bicycleadcategory = BicycleAdCategoryForm(request.POST)
form_bicycleaditemkindselect = BicycleAdItemKindSelectForm(request.POST)
formset_bicycleaditemkindpropertyvalue = formsetBicycleAdItemKindPropertyValue(request.POST)
#pdb.set_trace()
if form_main.is_valid() and form_bicyclead.is_valid() and form_bicycleadcategory.is_valid() and form_bicycleaditemkindselect.is_valid() and formset_bicycleaditemkindpropertyvalue.is_valid():
main_f = form_main.save()
bicyclead_f = form_bicyclead.save(commit=False)
bicyclead_f.main = main_f
bicyclead_f.save()
bicycleadcategory_f = form_bicycleadcategory.save(commit=False, rel_obj=model_bicyclead)
else:
# Build the forms
form_main = MainForm()
form_bicyclead = BicycleAdForm()
form_bicycleadcategory = BicycleAdCategoryForm()
form_bicycleaditemkindselect = BicycleAdItemKindSelectForm()
formset_bicycleaditemkindpropertyvalue = formsetBicycleAdItemKindPropertyValue()
return render_to_response('app/submit/submit_ad.html', {'form_main': form_main, 'form_bicyclead': form_bicyclead, 'form_bicycleadcategory': form_bicycleadcategory, 'form_bicycleaditemkindselect': form_bicycleaditemkindselect, 'formset_bicycleaditemkindpropertyvalue': formset_bicycleaditemkindpropertyvalue}, context_instance=RequestContext(request))
{{formset_bicycleaditemkindpropertyvalue.management_form}}
{{formset_bicycleaditemkindpropertyvalue.non_form_errors}}
{{formset_bicycleaditemkindpropertyvalue.errors}}
{% for form in formset_bicycleaditemkindpropertyvalue.forms %}
<div class="item-bicycleaditemkindpropertyvalue">
<label for="{{form.bicycleaditemkindpropertyvalue.auto_id}}"></label>
{{form.bicycleaditemkindpropertyvalue}}
</div>
<form action="/submeter/anuncio/" method="post"><div style="display: none;"><input type="hidden" value="3TWjKpqnXG7afZcvF1YmmWcRBKnYqePB" name="csrfmiddlewaretoken"></div>
...
<div class="someclass">
<input type="hidden" id="id_form-TOTAL_FORMS" value="1" name="form-TOTAL_FORMS">
<input type="hidden" id="id_form-INITIAL_FORMS" value="0" name="form-INITIAL_FORMS">
<input type="hidden" id="id_form-MAX_NUM_FORMS" name="form-MAX_NUM_FORMS">
[]
<div class="item-bicycleaditemkindpropertyvalue">
<label for="id_form-0-bicycleaditemkindpropertyvalue">Some 0</label>
<select id="id_form-0-bicycleaditemkindpropertyvalue" name="form-0-bicycleaditemkindpropertyvalue">
...
</select>
</div><div class="item-bicycleaditemkindpropertyvalue">
<label for="id_form-1-bicycleaditemkindpropertyvalue">Some 1</label>
<select id="id_form-1-bicycleaditemkindpropertyvalue" name="form-1-bicycleaditemkindpropertyvalue">
...
</select>
</div>
<div class="item-bicycleaditemkindpropertyvalue">
<label for="id_form-2-bicycleaditemkindpropertyvalue">Some 2</label>
<select id="id_form-2-bicycleaditemkindpropertyvalue" name="form-2-bicycleaditemkindpropertyvalue">
...
</select>
</div>
</div>
<input type="submit">
</form>
class BicycleAdItemKindPropertyValueForm(forms.Form):
bicycleaditemkindpropertyvalue = forms.ChoiceField()
class BicycleAdItemKindPropertyValueFormSet(BaseFormSet):
def __init__(self, *args, **kwargs):
super(BicycleAdItemKindPropertyValueFormSet, self).__init__(*args, **kwargs)
for form in self.forms:
form.empty_permitted = False
def clean(self):
pdb.set_trace()
for form in self.forms:
None
#form.fields['bicycleaditemkindpropertyvalue']
(Pdb) self.data
<QueryDict: {u'form-1-bicycleaditemkindpropertyvalue': [u'29'],
u'form-2-bicycleaditemkindpropertyvalue': [u'33'],
u'title': [u'adasd'],
u'form-MAX_NUM_FORMS': [u''],
u'country': [u'42'],
u'section': [u'5'],
u'item_kind': [u'4'],
u'form-INITIAL_FORMS': [u'0'],
u'bicycleadcategorytype': [u'3', u'2'],
u'csrfmiddlewaretoken': [u'3TWjKpqnXG7afZcvF1YmmWcRBKnYqePB'],
u'form-TOTAL_FORMS': [u'3'],
u'form-0-bicycleaditemkindpropertyvalue': [u'4']}>
(Pdb) self.is_valid()
False
最佳答案
formset
在上面的代码中声明正确。此外,生成的输出是表单集生成它的理想方式。关于验证表单,你可以简单地做。
for form in formset:
if form.is_valid():
# If is valid do something here
else:
# Do something Else
clean
form
下的方法类,因为此方法由
is_valid
调用方法。
class BicycleAdItemKindPropertyValueForm(forms.Form):
bicycleaditemkindpropertyvalue = forms.ChoiceField()
def clean(self):
# Do field validation here.
clean_field
方法如下:
class BicycleAdItemKindPropertyValueForm(forms.Form):
bicycleaditemkindpropertyvalue = forms.ChoiceField()
def clean_bicycleaditemkindpropertyvalue(self):
# Do single field validation here.
关于Django Formsets - 如何正确构建表单集并对其进行验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14280875/
我正在关注this教程展示了如何在 Django 中使用表单集。本教程使用 django-dynamic-formset JQuery 插件,它可以像 Django admin 中一样启用表单集的编辑
好的,所以我有一个有效的表单集。但是给了我一个错误,该表单没有属性cleaned_data .. 老实说,我完全不知道发生了什么.. 我在终端上尝试了我的代码,它返回了一个空字典..没有错误.. 形式
我有一个显示多个 Formsets 的页面,每个 Formsets 都有一个前缀。使用 formset_factory 创建表单集默认选项,包括 extra=1 .可以使用 JavaScript 添加
如何使用 request.POST 从表单集中更新对象? 这是我的代码,我的问题是这总是会创建一个新的 PhoneNumber目的。但是我想更新旧的PhoneNumber目的。 def contact
我正在使用 Django 1.4 并且我正在为 Formsets 苦苦挣扎。我已经阅读了文档和很多 SO 问题。我越来越不知道它们是如何工作的。 - Fomsets 应该像这样配置/声明吗? 我是如何
给定以下模型: class Graph(models.Model): owner = models.ForeignKey(User) def __unicode__(self):
如何将动态表单添加到模板中的 django 表单集,而无需烦人的 html 模板输出副本? 我有一个结果表单数量未知的表单集,我需要通过按一个按钮直接在模板中添加一些表单。 最佳答案 这个 self
我正在为一个乐队制作出勤登记表。我的想法是在表格的一部分中输入演出或排练的事件信息。这是事件表的模型: class Event(models.Model): event_id = models
如何将自定义标签添加到我的表单集中? {{ formset.management_form }} {% for form in formset %} {% for f
我在 django-users 列表上发布了这个问题,但那里还没有回复。 我有看起来像这样的模型: class ProductGroup(models.Model): name = mode
模型.py: class ExperienceSynopsis(Audit): user = models.ForeignKey(User, null =
当我使用循环呈现我的表单集时,一切正常。 当我尝试通过分别访问每个字段(用于前端目的)手动呈现它时,表单正在呈现但提交失败。每个字段都是相同的,所以我猜在使用我不知道的表单集时创建了一个隐藏字段。 这
我需要的表单之一是简单字段(例如“部门”、“建筑物”和“房间编号”)和动态生成的字段对(例如“姓名”和“电子邮件”)的组合。理想情况下,编辑简单字段的内容和添加/删除动态字段对将在单个表单上完成。 在
我正在尝试创建一个像这样的简单帖子共享表单。 我正在使用 formset 进行图像上传。但这给了我多种输入,如您所见。每个输入也可以选择单个图像。但我正在尝试使用单个输入上传多个图像。 View .p
在我的 Django 应用程序中,我有一个从简单(非模型)表单创建的表单集,其中 extra=1 (以允许 javasript 稍后添加更多表单)。 class SomeForm(forms.Form
我在显示具有多个实例对象的内联表单集时遇到问题。我想要一份所有 Owner 的列表以及他们所有 Pet 的内联表单集,全部一页。 下面的代码可以工作,但一次调用 1 个所有者对象。有什么建议吗? 这是
无法弄清楚如何过滤表单集以仅显示登录用户的博客文章。表单呈现得很好,但是它允许任何用户将照片分配给任何博客文章,无论谁拥有该博客文章。如何将博文选项过滤为仅适用于登录用户? View .py @log
我正在尝试为表单集编写单元测试,但在尝试实例化它时出现以下错误。 错误: Traceback (most recent call last): File "/home/jwelborn/Doc
我正在创建一个简单的 Django 应用程序,您可以在其中创建包含配料的食谱。在我的 RecipeCreate View 中,我有一个简单的表单集,其中包含一个 select 输入(您在其中选择产品)
如何检查表单集行是否被标记为已删除? for row in myformset: //check if row is mark as deleted 提前致谢! 最佳答案 https://do
我是一名优秀的程序员,十分优秀!