我是Django的新手,试图弄清楚如何设置我的模型,以便实现我的想法。在我的Web应用程序上,许多乘客可以通过表格预订许多航班。
我想显示与特定航班相关的所有乘客。
示例:伦敦=>巴黎| [“ Bob”,“ Alice”,“ Bill”] ,然后我将遍历模板中的该列表。
抱歉,这对您来说太简单了。
我尝试通过views.py中的id获取单个航班,然后在模板中显示数据:{{london.passengers.name}},但返回None
views.py
def flights(request):
london = Flight.objects.get(id=1)
context = {'london': london}
return render(request, 'flights.html', context)
models.py
# Passenger model.
class Passenger(models.Model):
name = models.CharField(max_length=50)
def __str__(self):
return self.name
# Flight model.
class Flight(models.Model):
origin = models.CharField(max_length=50)
destination = models.CharField(max_length=50)
duration = models.IntegerField(null=True, blank=True)
passengers = models.ManyToManyField(Passenger)
def __str__(self):
return self.origin + " => " + self.destination
答案 0 :(得分:3)
与Passenger
关联的flight
个对象列表可以通过以下方式获取:
def flights(request):
london = Flight.objects.get(id=1)
passengers = london.passengers.all()
context = { 'london': london, 'passengers': passengers }
return render(request, 'flights.html', context)
,然后使用以下命令在模板中呈现它:
{% for passenger in passengers %}
{{ passenger.name }}
{% endfor %}
或者您也可以使用london.passengers.all
在模板中对其进行访问,并使用以下命令对其进行迭代:
{% for passenger in london.passengers.all %}
{{ passenger.name }}
{% endfor %}
我个人更喜欢在视图中确定passengers
,因为视图确定将呈现的内容,而模板仅确定如何