Django的选择

时间:2019-11-22 13:51:34

标签: django django-models django-templates

我的模特:

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中出现问题。我没有获得字段名称,但是由于一个奇怪的原因,我得到了编号。 请帮助

2 个答案:

答案 0 :(得分:0)

为了获得选择的文本表示形式,可以使用get_fieldname_display() method [Django-doc],因此这里是.get_gatenuk_display()。在您的模板中,您可以通过以下方式呈现该信息:

{{ ksiazki.get_gatunek_display }}

您应该包括括号。 Django的模板语言不允许这样做,但会自动调用可调用对象。

答案 1 :(得分:0)

我还有一个问题,如何使我的模板(html)在导航栏(boostrap)中显示所有选择= B00K_CHOICES