Как отобразить данные базы данных на вашем сайте?
Это очень простой вопрос, который поставил меня в тупик. У меня есть 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}}
Думаю, этот шаблон может помочь вам решить проблему, связанную с получением значения связанного поля