Django form.ModelMultipleChoiceField метка, необходимая для каждого сгенерированного флажка - PullRequest
0 голосов
/ 12 сентября 2018

пожалуйста, я хочу, чтобы имя, данное каждому сгенерированному флажку (в html), имело разные имена на основе поля "title" в модели категорий. Вывод html дает одну и ту же метку (имя) каждому произведенному флажку.

Вот мой forms.py

класс ProductFilterForm (формы. 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> 

Я хочу, чтобы ** объект ** категории заменялся каждым заголовком категории из модели.

Я страдал, чтобы получить это исправлено за прошедшее число дней. Я думаю, что мне нужно только указать метку в forms.py, но я не знаю, как это сделать . Каждый флажок, созданный формой, называется «КАТЕГОРИЯ ОБЪЕКТА». Я хочу, чтобы они назвали поле заголовка в Категория Модель

1 Ответ

0 голосов
/ 12 сентября 2018

Если я правильно понимаю, определение функции str в классе модели должно помочь.

class Category(models.Model):
  ...

  def __str__():
    return Category.name

P.S .: У меня недостаточно населения, чтобы прокомментировать ваш вопрос. Если это не работает для вас, пожалуйста, дайте мне знать.

...