从项目列表中创建django中的动态标签

时间:2012-01-09 16:31:57

标签: django forms

我花了一些时间查看其他问题,但我真的不了解一些实现。我正在使用django创建一个虚拟图书租赁网络应用程序。我想显示一个带有复选框的书籍列表,以便使用django表单选择它。

有没有办法从单独模型中创建的书籍标题中动态生成复选框的标签?

示例书模型:

class Book(models.Model):
    title = models.CharField(max_length=100)
    .
    .
    .
    pub_date = models.DateField()

租赁表格:

class RentalForm(forms.Form):
    name = forms.BooleanField(label = "label")
    .
    .

我希望表单动态地将书名插入标签字段,但我不知道如何。

1 个答案:

答案 0 :(得分:0)

查看ModelMultipleChoiceField和CheckboxSelectMultiple小部件:

from django.forms.fields import MultipleChoiceField
from django.forms.widgets import CheckboxSelectMultiple

class RentalForm(forms.Form):
    books = forms.ModelMultipleChoiceField(queryset=Book.objects.all(),
        widget=CheckboxSelectMultiple)

我认为它使用__unicode__来显示复选框旁边的“标签”。你需要在.save()或POST请求上使用一些逻辑来处理这个问题,但它应该可以工作。

或者,如果你想要真正的BooleanFields,你需要在RentalForm上用__init __()做一些事情,并动态创建所有的BooleanFields。