我的模型:
class Book(models.Model):
# book types and placed
BIOGRAFIA = 1
FANTASTYKA = 2
HISTORYCZNY = 3
HORROR = 4
POEZJA = 5
PRZYGODA = 6
ROMANS = 7
DRAMAT = 8
BRAK = 0
B00K_CHOICES = (
(BIOGRAFIA, 'Biografia'),
(FANTASTYKA, 'Fantasy/Sci-Fi'),
(HISTORYCZNY, 'Historyczny'),
(HORROR, 'Horror'),
(POEZJA, 'Poezja'),
(PRZYGODA, 'Przygoda'),
(ROMANS, 'Romans'),
(DRAMAT, 'Dramat'),
(BRAK, 'Brak informacji'),
)
tytul = models.CharField(max_length=60, unique=True)
autor = models.ForeignKey(Author, on_delete=models.CASCADE)
opis = models.TextField(null=True, blank=True)
gatunek = models.IntegerField(choices=B00K_CHOICES, default=BRAK)
cena = models.DecimalField(max_digits=400, decimal_places=2)
rok_wydania = models.DateField(null=True, blank=True)
liczba_stron = models.PositiveIntegerField(null=True, blank=True)
zdjecie = models.ImageField(null=False, blank=True, upload_to='zdjecia_ksiazek')
przecena = models.BooleanField()
def __str__(self):
return self.tytul
我的观点:
def Gatunek(request, gatunek_id):
ksiazki = Book.objects.filter(gatunek=gatunek_id)
return render(request, 'ksiazki.html', {'ksiazki': ksiazki})
我觉得我的观点不太好,我不知道是否也应该是{{gatunek. gatunek}}
我的模板 HTML:
{% for ksiazki in ksiazki %}
<div class="card" style="width: 500px">
<div class="card-body">
<img src="/media/{{ksiazki.zdjecie}}">
<div class="row">
<div class="col-sm-9">
<h2>{{ksiazki}}</h2>
</div>
<div class="col-sm-3">
<a href="{% url 'Edytuj_ksiazke' ksiazki.id %}"><i class="fas fa-2x fa-edit"></i></a>
<a href="{% url 'Usun_ksiazke' ksiazki.id %}"><i class="fas fa-2x fa-trash-alt"></i></a>
</div>
</div>
<p>{{ ksiazki.gatunek }} </p>
<p>{{ ksiazki.opis }}</p>
</div>
</div>
{% endfor %}
在我看来,当我在寻找具有选择参数的字段时,我在 Django 中遇到了问题。我没有获得字段名称,而是出于奇怪的原因获得了数字。 请帮忙
为了获得选择的文本表示,您可以使用get_fieldname_display()
方法 [Django-doc],所以在这里,.get_gatenuk_display()
.在模板中,您可以使用以下内容呈现:
{{ ksiazki.get_gatunek_display}}
不应包含括号。Django 的模板语言不允许这样做,但会自动调用可调用对象。
我还有一个问题,如何在导航栏(boostrap(中使我的模板(html(显示您的所有选择 = B00K_CHOICES