Skip to main content
 首页 » 编程设计

python之django 在模型之间建立正确的关系

2024年08月13日49www_RR

我是 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 确定将呈现什么,而模板只确定如何将被渲染。