- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在生成 ModelForms 并希望对它们在我的模板中的输出方式进行精细控制。具体来说,我需要在每个选择列表中的每个单选按钮的末尾添加一些标记。
代码:
# order-form.html
{% load catname %}
<form id = "order-form">
{% for form in forms %}
<div id="gun-{{ forloop.counter }}">
{% for field in form.fields %}
<div id="{{ field }}-item" class="item">
<h3>{{ field|catname }}</h3>
{% for choice in form.field.choices %} {# <-- Help me out here #}
{{ choice.id }}
{{ choice.title }}
{% endfor %}
</div>
{% endfor %}
{% endfor %}
<button type="submit" id="standard-gun-form-submit">Continue to next step</button>
</form>
# views.py
def get_form(request):
if request.method == 'POST':
if request.POST['gun_type'] == 'standard':
forms = [StandardGunForm(prefix=p) for p in range(0,2)]
return render_to_response('main/order-form.html', {'forms' : forms,}, RequestContext(request))
# forms.py
class StandardGunForm(ModelForm):
def __init__(self, *args, **kwargs):
super(StandardGunForm, self).__init__(*args, **kwargs)
for field in self.fields:
if isinstance(self.fields[field], ModelChoiceField):
self.fields[field].empty_label = None
class Meta:
model = BaseGun
widgets = {
'FrameTuning' : RadioSelect(),
'FrameConnection' : RadioSelect(),
}
exclude = ('price')
Endgame:看起来像这样的标记
<form id="foo">
<div class="category">
<div class="item">
<input type="radio" name="srsbzns" value="1">Option 1</input>
<img src="http://placekitten.com/150/150">
<p>Other foo here</p>
</div>
<div class="item">
<input type="radio" name="srsbzns" value="2">Option 2</input>
<img src="http://placekitten.com/150/150">
<p>Other foo here</p>
</div>
<div class="item">
<input type="radio" name="srsbzns" value="3">Option 3</input>
<img src="http://placekitten.com/150/150">
<p>Other foo here</p>
</div>
</div>
</form>
从 shell 中,这返回了我想要的内容
>>> forms = [StandardGunForm(prefix=p) for p in range(0,2)]\
>>> forms[0].fields['frame_tuning'].choices.queryset
我很惊讶这被证明如此具有挑战性!
奖励:我启用了 DEBUG = True 和 Django 调试工具栏。是否可以将变量转储到浏览器,以便我在向下钻取时可以看到这些东西的样子?
谢谢!
最佳答案
我不得不做类似的事情并开始走这条路。我想从 ModelChoiceField 创建表格行,其中每一列都有模型实例的不同字段(然后我允许通过 JavaScript 过滤表格行)。
我在 Django 文档中找不到它,但快速阅读 Django 源代码找到了方法。您可以像这样访问查询集以访问模型实例:
<form action="{% url 'some_view' %}" method="post">
{% csrf_token %}
{% if form.non_field_errors %}
{{ form.non_field_errors }}
{% endif %}
{% for field in form %}
{{ field.label }}
{% if field.field.choices %}
{% for model_instance in field.field.choices.queryset %}
{{ model_instance.id }}
{% endfor %}
{% else %}
{{ field }}
{% endif %}
{% if field.errors %}
{{ field.errors|striptags }}
{% endif %}
{% endfor %}
<button type="submit">Submit</button>
</form>
但是,此时我们已经分解了 Shiny 的小部件(在我的例子中是 CheckboxSelectMultiple)并且必须使用模板代码重新组合 HTML 表单输入。我没有找到直接的方法来同时迭代 ModelChoiceField 以访问模型实例字段并获取选择的 HTML 表单标签。
也许有办法,但我放弃了我的尝试并构建了我自己的 HTML 表单,在一个 View 中处理所有 POST 数据。那样就容易多了。 ModelForms 真的很不错也很方便,但是将它们用于它们不是为之构建的东西最终会变得更加困难。
我想我会发布这个以防有人出于其他原因尝试这样做。希望对您有所帮助。
关于django - 尝试访问 Django 模板中的 ModelForm 字段 modelChoice 选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14307622/
我正在尝试创建使用 django-filters 的过滤器方法 请参阅下面的模型示例: class Chicken(TimeStampedModel): eggs = ForeignKey(E
我正在生成 ModelForms 并希望对它们在我的模板中的输出方式进行精细控制。具体来说,我需要在每个选择列表中的每个单选按钮的末尾添加一些标记。 代码: # order-form.html {%
我正在生成 ModelForms 并希望对它们在我的模板中的输出方式进行精细控制。具体来说,我需要在每个选择列表中的每个单选按钮的末尾添加一些标记。 代码: # order-form.html {%
我希望当前登录的用户能够创建并保存这两个表单。第二种形式具有ManyToManyField 和ForeignKey 关系,如下所示。 目前,我尝试从 ChatGroupUser ModelForm 查
我正在尝试构建一个漂亮的表单,并为它找到了一些很酷的 CSS,表单看起来不错,但有几个字段(大部分来自选择字段,因为模型有外键)和另一个是来自日期字段的内容完全被忽略了。我在堆栈溢出并使用了我认为正确
我是一名优秀的程序员,十分优秀!