Form.label не отображается в django

вот мой код и я пытаюсь показать ярлык, но он не отображается

вот мой файл формы forms.py

class ReviewForm(ModelForm):
    class Meta:
        model = Review
        fields = ['value', 'body']
        labels = {'value': 'Place your vote', 'body': 'Add a comment with your vote'}
    def __init__(self, *args, **kwargs):
        super(ReviewForm, self).__init__(*args, **kwargs)
        
        for name, field in self.fields.items():
            field.widget.attrs.update({'class': 'input'})

вот мой файл views и функция для этой формы views.py

def project(request, pk):
    projectObj = Project.objects.get(id=pk)
    form = ReviewForm()
    context = {
        'project': projectObj,
        'form': form
    }
    return render(request, 'projects/single-project.html', context)

это модель для раздела обзора models.py

class Review(models.Model):
    VOTE_TYPE = (
        ('up', 'Up Vote'),
        ('down', 'Down Vote')
    )
    owner = models.ForeignKey(Profile, on_delete = models.CASCADE, null=True)
    project = models.ForeignKey(Project, on_delete=models.CASCADE)
    body = models.TextField(null=True, blank=True)
    value = models.CharField(max_length=200, choices=VOTE_TYPE)
    created = models.DateTimeField(auto_now_add=True)
    id = models.UUIDField(default = uuid.uuid4, unique=True, primary_key=True, editable=False)
    
    class Meta:
        # every user can only have single comment on each project
        unique_together = [['owner', 'project']]


    def __str__(self):
        return self.value

и html-файл для отображения формы html-файл

<form class="form" action="{% url 'project' project.owner.id %}" method="POST">
              {% csrf_token %}
              {% for field in form %}
              <div class="form__field">
                <label for="formInput#textarea">{{field.label}}</label>
                {{field}}
              </div>
              {% endfor %}
              <input class="btn btn--sub btn--lg" type="submit" value="Comments" />
            </form>

Я пытаюсь показать form.label, но он не отображается

метка содержится в свойстве label_tag в поле:

<form class="form" action="{% url 'project' project.owner.id %}" method="POST">
    {% csrf_token %}
    {% for field in form %}
        <div class="form__field">
            <label for="formInput#textarea">{{field.label_tag}}</label>
            {{field}}
        </div>
    {% endfor %}
    <input class="btn btn--sub btn--lg" type="submit" value="Comments" />
</form>

Вы уверены в свойстве labels класса Meta класса ModelForm, я не знаю этого свойства. Возможно, вам нужно переопределить ваше поле с нужной вам меткой, или обновить метку поля в функции init вашей формы.

class ReviewForm(ModelForm):
    class Meta:
        model = Review
        fields = ['value', 'body']

    def __init__(self, *args, **kwargs):
        super(ReviewForm, self).__init__(*args, **kwargs)
        
        for name, field in self.fields.items():
            field.widget.attrs.update({'class': 'input'})
    
        self.fields["value"].label = 'Place your vote'
        self.fields["body"].label = 'Add a comment with your vote'

Вернуться на верх