Изменение метки поля в форме django
Я работаю над проектом сайта-блога. Я использую Django crispy form для создания записей в блоге. Пользователи могут размещать статьи, нажимая на кнопку post. На странице добавления поста пользователь должен указать заголовок, содержание, изображение. Пользователь также должен выбрать категорию.
blog/model.py
from django.db import models
from django.utils import timezone
from django.contrib.auth import get_user_model
from django.urls import reverse
# Create your models here.
class Category(models.Model):
cid = models.AutoField(primary_key=True, blank=True)
category_name = models.CharField(max_length=100)
def __str__(self):
return self.category_name
class Post(models.Model):
aid = models.AutoField(primary_key=True)
image = models.ImageField(null=True, blank=True, default='blog-default.png', upload_to='images/')
title = models.CharField(max_length=200)
content = models.TextField()
created = models.DateTimeField(default=timezone.now)
author = models.ForeignKey(get_user_model(), on_delete=models.CASCADE)
cid = models.ForeignKey(Category, on_delete=models.CASCADE)
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse('post-detail', kwargs={'pk':self.pk})
views.py
from django.shortcuts import render
from .models import Post
from django.views.generic import CreateView
from django.contrib.auth.mixins import LoginRequiredMixin
class UserPostCreateView(LoginRequiredMixin, CreateView):
model = Post
fields = ['title', 'content', 'image', 'cid']
def form_valid(self, form):
form.instance.author = self.request.user
return super().form_valid(form)
post_form.py
{% extends 'users/base.html' %}
{% load crispy_forms_tags %}
{% block content %}
<div class="content-section">
<form method="POST" enctype="multipart/form-data">
{% csrf_token %}
<fieldset class="form-group">
<legend class="border-bottom mb-4">Add Post</legend>
{{ form|crispy }}
</fieldset>
<div class="form-group">
<button type="submit" class="btn btn-outline-primary btn-sm btn-block"> Post </button>
</div>
</form>
</div>
{% endblock content %}
Здесь, в файле .html в браузере показано, что метка категории - 'Cid'. Но я хочу, чтобы эта метка была 'Select Category'. Как я могу это изменить?
Django form...........
Вы можете добавить verbose_name
к своему полю в models.py
. Это значение, которое отображается при генерации форм. Например, так:
cid = models.ForeignKey(Category, on_delete=models.CASCADE, verbose_name='Select Category')
Вы можете использовать этот метод в файле forms.py:
class form(forms.ModelForm):
class Meta:
....
labels={
'cid': 'Select Category',
}
....
или
cid = forms.Select(label='Select Category')