如何将放射组选择与Django形式的普通输入结合起来

时间:2016-05-10 09:10:10

标签: python django forms

我想在Django中创建一个类似于您可以在提醒重复部分中在Google日历中找到的表单。 enter image description here

class ReminderFlatForm(ModelForm):
    WEEKS = (
        (1, 'M'),
        (2, 'T'),
        (3, 'W'),
        (4, 'T'),
        (5, 'F'),
        (6, 'S'),
        (7, 'S'),
        )
    REPEATS_BY = (
        (8, 'day of the month'),
        (9, 'day of the week')
        )
    ENDS = (
        (1, 'Never'),
        (2, 'After <input type="text" id="after_id"> occuriencies'),
        (3, '<input type="text" id="ondate_id">')
        )

    weeks = forms.MultipleChoiceField(
        choices=WEEKS,
        label="",
        required=False,
        widget=forms.CheckboxSelectMultiple
        )
    months = forms.MultipleChoiceField(
        choices=REPEATS_BY,
        label="",
        required=False,
        widget=forms.RadioSelect
        )
    ends = forms.MultipleChoiceField(
        choices=ENDS,
        label="Ends",
        required=True,
        widget=forms.RadioSelect
        )

但是我没有HTML元素,而是纯文本。 我怎么能用Django的形式做到这一点?

另外,如果重要,我会使用脆皮形式。

2 个答案:

答案 0 :(得分:2)

您需要对其中包含html的元素使用mark_safe

   ENDS = (
        (1, 'Never'),
        (2, mark_safe('After <input type="text" id="after_id"> occuriencies')),
        (3, mark_safe('<input type="text" id="ondate_id">'))
        )

答案 1 :(得分:0)

此外,您可以循环模板中的字段并根据需要绘制它们。种类:

{% for field in form %}
    <div class="fieldWrapper">
        {{ field.errors }}
        {{ field.label_tag }} {{ field }}
        {% if field.help_text %}
        <p class="help">{{ field.help_text|safe }}</p>
        {% endif %}
    </div>
{% endfor %}

因此,您可以将字段定义为纯文本(在表单中),然后在模板之间将它们绘制在html元素之间。

https://docs.djangoproject.com/es/1.9/topics/forms/