Отображать объекты и объекты их внешних ключей - PullRequest
0 голосов
/ 25 апреля 2018

Нужна помощь с отображением данных.

models.py

class Brand(models.Model):
    name = models.CharField(max_length=100)

    def __str__(self):
        return self.name

class Car(models.Model):
    name = models.CharField(max_length=100)
    brand = models.ForeignKey(Brand, related_name='brands', on_delete=models.CASCADE)

    def __str__(self):
        return self.brand.name + " - " + self.name

views.py

def car_view(request):

    # pls halp

Как отобразить список брендов и после каждого бренда список автомобилей? Пример показан ниже.

<html>
    <ul>
    <li>Toyota</li>
    <ul>
        <li>Corolla</li>
        <li>Avensis</li>
        <li>Yaris</li>
    </ul>
    <li>Volkswagen</li>
    <ul>
        <li>Golf</li>
        <li>Transporter</li>
        <li>Passat</li>
    </ul>
    </ul>
</html>

1 Ответ

0 голосов
/ 25 апреля 2018

Прежде всего исправьте модель related_name,

class Brand(models.Model):
    name = models.CharField(max_length=100)

    def __str__(self):
        return self.name

class Car(models.Model):
    name = models.CharField(max_length=100)
    brand = models.ForeignKey(Brand, related_name='cars', on_delete=models.CASCADE)

    def __str__(self):
        return self.brand.name + " - " + self.name

Вы можете получить доступ ко всем автомобилям из Brand экземпляра модели, так как шаблон brand.cars.all()

def car_view(request):  
    return render("list.html", {'brand_list': Brand.objects.all()})

будет похож на

<!-- list.html -->
{% block content %}
     {% for brand in brand_list %}
          {{ brand.name }}
          {% for car in brand.cars.all %}
              {{car.name}}
          {% endfor %}
     {% endfor %}
{% endblock %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...