我的模特:
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中出现问题。我没有获得字段名称,但是由于一个奇怪的原因,我得到了编号。 请帮助
答案 0 :(得分:0)
为了获得选择的文本表示形式,可以使用get_fieldname_display()
method [Django-doc],因此这里是.get_gatenuk_display()
。在您的模板中,您可以通过以下方式呈现该信息:
{{ ksiazki.get_gatunek_display }}
您应该不包括括号。 Django的模板语言不允许这样做,但会自动调用可调用对象。
答案 1 :(得分:0)
我还有一个问题,如何使我的模板(html)在导航栏(boostrap)中显示所有选择= B00K_CHOICES