请根据分类模型中的“标题”字段,为每个生成的复选框(在html中)提供的名称具有不同的名称。 html输出为每个产生的复选框赋予相同的标签(名称)。
这是我的表格。py
ProductFilterForm(forms.Form)类:
category_id = forms.ModelMultipleChoiceField(
label='Categories',
queryset=Category.objects.all(),
widget=forms.CheckboxSelectMultiple,
required=False)
如您所见,会生成此html。但我希望每个人都有基于类别标题的名称。 “显示了类别对象,但这不是我想要的”
</label> <div class="controls "> <label class="checkbox"> <input type="checkbox" name="category_id" id="id_category_id_1" value="1" >Category object
</label> <label class="checkbox"> <input type="checkbox" name="category_id" id="id_category_id_2" value="2" >Category object
</label> <label class="checkbox"> <input type="checkbox" name="category_id" id="id_category_id_3" value="3" >Category object
</label> <label class="checkbox"> <input type="checkbox" name="category_id" id="id_category_id_4" value="4" >Category object
</label> </div> </div> <div id="div_id_max_price" class="form-group"> <label for="id_max_price" class="control-label ">
这是模型。py
class Product(models.Model):
title = models.CharField(max_length=120)
description = models.TextField(blank=True, null=True)
price = models.DecimalField(decimal_places=2, max_digits=20)
active = models.BooleanField(default=True)
categories = models.ManyToManyField('Category', blank=True)
default = models.ForeignKey('Category', related_name='default_category', null=True, blank=True)
def __unicode__(self):
return self.title
class Category(models.Model):
title = models.CharField(max_length=120, unique=True)
slug = models.SlugField(unique=True)
description = models.TextField(null=True, blank=True)
active = models.BooleanField(default=True)
timestamp = models.DateTimeField(auto_now_add=True, auto_now=False)
def __unicode__(self):
return self.title
请这是输出
Categories
</label> <div class="controls "> <label class="checkbox"> <input type="checkbox" name="category_id" id="id_category_id_1" value="1" >Category object
</label> <label class="checkbox"> <input type="checkbox" name="category_id" id="id_category_id_2" value="2" >Category object
</label> <label class="checkbox"> <input type="checkbox" name="category_id" id="id_category_id_3" value="3" >Category object
</label> <label class="checkbox"> <input type="checkbox" name="category_id" id="id_category_id_4" value="4" >Category object
</label> </div>
我希望将** Category对象**替换为模型中的每个Category标题。
我一直想在过去几天内解决此问题。 我认为我只需要在forms.py中指定标签,但我不知道该怎么做如此。 表单产生的每个复选框都被命名为“ CATEGORY OBJECT”。 我希望在类别模型
中将它们命名为标题字段答案 0 :(得分:0)
如果我理解正确,那么在模型类中定义 str 函数应该会有所帮助。
class Category(models.Model):
...
def __str__():
return Category.name
P.S .:我的人口不足,无法评论您的问题。如果您不满意,请告诉我。