我是 Django 的新手,正在尝试弄清楚如何设置我的模型以便实现我的想法。在我的网络应用程序中,许多乘客可以通过表格预订许多航类。
我想显示与特定航类相关的所有乘客。
示例:伦敦 => 巴黎 | [“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)
模型.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
请您参考如下方法:
与 flight 关联的 Passenger 对象列表可以通过以下方式获得:
def flights(request):
london = Flight.objects.get(id=1)
<b>passengers = london.passengers.all()</b>
context = { 'london': london, 'passengers': passengers }
return render(request, 'flights.html', context)
然后在模板中渲染:
{% for passenger in <b>passengers</b> %}
{{ <b>passenger.name</b> }}
{% endfor %}
或者您可以使用 london.passengers.all 在模板中访问它,然后使用以下命令对其进行迭代:
{% for passenger in london.<b>passengers.all</b> %}
{{ passenger.name }}
{% endfor %}
我个人更喜欢确定 View 中的passengers,因为 View 确定将呈现什么,而模板只确定如何将被渲染。
