Как отобразить данные базы данных на вашем сайте?

Это очень простой вопрос, который поставил меня в тупик. У меня есть 2 таблицы, которые связаны между собой: Dealershiplistings, Dealerships. На моем сайте мне нужно отобразить модель, марку и год выпуска автомобиля (которые все хранятся в DealershipListing, поэтому у меня нет проблем с этой частью), но мне также нужно вывести адрес, который хранится в таблице Dealerships. Может ли кто-нибудь помочь мне с этим?

вот что у меня есть для моего views.py

def store(request):
    dealer_list = Dealer.objects.all()
    car_list = DealershipListing.objects.all()
    context = {'dealer_list': dealer_list, 'car_list': car_list}
    return render(request, 'store/store.html', context)

я пробовал делать

{{%for car in car_list%}}
<h6>{{car.year}} {{car.make}} {{car.model}}</h6>
{% endfor %}

, который отлично работает, отображая их. Но теперь как мне отобразить адрес дилерского центра, который продает автомобиль?

models.py

class Dealer(models.Model):
    dealersName = models.TextField(('DealersName'))
    zipcode = models.CharField(("zipcodex"), max_length = 15)
    zipcode_2 = models.CharField(("zipCode"), max_length = 15)  
    state = models.CharField(("state"), max_length=5)
    address = models.TextField(("Address"))
    dealerId = models.IntegerField(("ids"), primary_key=True)
    

    def __str__(self):
        return self.dealersName


class DealershipListing(models.Model):
    carID = models.IntegerField(("CarID"), primary_key=True)
    price = models.IntegerField(('price'))
    msrp = models.IntegerField(('msrp'))
    mileage = models.IntegerField(('mileage'))
    is_new = models.BooleanField(('isNew'))
    model = models.CharField(("Models"), max_length= 255)
    make = models.CharField(("Make"), max_length=255)
    year = models.CharField(("Year"),max_length=4)
    dealerID = models.ForeignKey(Dealer, models.CASCADE)

    def __str__(self):
        return self.year + " " + self.make + " " + self.model

Тогда, похоже, ваш вопрос действительно How do I access data from a foreign key in a template?

Ответ освежающе прост!

{{car.dealerID.address}}

На заметку: возможно, вы захотите переименовать dealerID в dealer, django будет обрабатывать имена столбцов базы данных так, как считает нужным, поэтому, пока вы обращаетесь к данным с помощью .dealer, столбец базы данных будет называться dealer_id автоматически. Переименование поля также делает более очевидным, что обращение к нему даст вам дилера, а не его id.

вызов с именем модели - это то, что я предпочитаю использовать

{{obj.related_table.field_name}}

Думаю, этот шаблон может помочь вам решить проблему, связанную с получением значения связанного поля

Вернуться на верх