gpt4 book ai didi

python - 如何获取模板标签来自动选中 Django 中的复选框

转载 作者:行者123 更新时间:2023-11-30 23:59:19 24 4
gpt4 key购买 nike

我正在使用 ModelForm 类为 ManyToManyField 生成一堆复选框,但我遇到了一个问题:虽然默认行为会自动检查适当的框(当我编辑对象时),但我可以'不知道如何在我自己的自定义模板标签中获取该信息。

这是我的模型中的内容:

from myproject.interests.models import Interest


class Node(models.Model):
interests = models.ManyToManyField(Interest, blank=True, null=True)


class MyForm(ModelForm):

from django.forms import CheckboxSelectMultiple, ModelMultipleChoiceField

interests = ModelMultipleChoiceField(
widget=CheckboxSelectMultiple(),
queryset=Interest.objects.all(),
required=False
)

class Meta:
model = MyModel

在我看来:

from myproject.myapp.models import MyModel,MyForm

obj = MyModel.objects.get(pk=1)
f = MyForm(instance=obj)

return render_to_response(
"path/to/form.html", {
"form": f,
},
context_instance=RequestContext(request)
)

在我的模板中:

{{ form.interests|alignboxes:"CheckOption" }}

这是我的模板标签:

@register.filter
def alignboxes(boxes, cls):
"""
Details on how this works can be found here:
http://docs.djangoproject.com/en/1.1/howto/custom-template-tags/
"""

r = ""
i = 0
for box in boxes.field.choices.queryset:
r += "<label for=\"id_%s_%d\" class=\"%s\"><input type=\"checkbox\" name=\"%s\" value=\"%s\" id=\"id_%s_%d\" /> %s</label>\n" % (
boxes.name,
i,
cls,
boxes.name,
box.id,
boxes.name,
i,
box.name
)
i = i + 1

return mark_safe(r)

问题是,我这样做只是为了在这些框周围包裹一些更简单的标记,所以如果有人知道如何以更简单的方式实现这一点,我会洗耳恭听。我很高兴知道一种方法来访问是否应该选中某个框。

最佳答案

在复选框的input标记中,您可以根据某些条件添加checked属性。假设您的盒子对象具有属性checked,其值为“checked”或空字符串“”

r += "<label for=\"id_%s_%d\" class=\"%s\"><input type=\"checkbox\" name=\"%s\" value=\"%s\" id=\"id_%s_%d\" %s /> %s</label>\n" % (
boxes.name,
i,
cls,
boxes.name,
box.id,
boxes.name,
i,
box.checked,
box.name
)

关于python - 如何获取模板标签来自动选中 Django 中的复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2447261/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com