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

标签 python django

我是 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/

相关文章:

python - Tkinter 导入文件对话框错误

python - Django + DjangoCMS 信号处理程序未被调用

javascript - 使用媒体查询从 Chart.js 中删除标签(或更改选项值)

python - Numpy 屏蔽操作

python - AttributeError: 'tuple' 对象没有属性 'sort'

python - Django 外键从无开始

django - 在Heroku上使用Django设置Websolr

Django admin 没有风格

python - tkinter 类中的单击事件

python - 如何将program.exe设置为Windows 10的默认浏览器?