我是 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)
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
最佳答案
与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 中的乘客
,因为 View 确定将渲染什么,而模板仅确定如何渲染将被渲染。
关于python - django在模型之间建立正确的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56994762/