manyTomanyField 中的许多属性没有名为 .all() 的属性 |初学者需要帮助|

问题描述 投票:0回答:1

我创建了一个名为 Flight 的模型,该模型连接到另一个名为 Passengers 的模型

flights = models.ManyToManyField(Flight, blank=True, related_name="passengers")

我尝试使用

Passengers = Flight.Passengers.all()
它抛出一个错误说

Traceback (most recent call last): File "<console>", line 1, in <module> AttributeError: 'ManyToManyDescriptor' object has no attribute 'all'

需要帮助!

我只想将航班和乘客的相关字段放入我的html中,但每当我尝试使用

 Flight.Passengers.all()
Flight.Passengers.get()

访问时,它都会抛出错误

可以使用

Passengers.objects.all()
绕过它,但我不需要它,否则我的数据库之间将没有关系!

python-3.x django django-models manytomanyfield
1个回答
0
投票

这是完全有道理的,

related_name
Flight
对象一起工作,而不是
Flight
,这意味着什么?

您因此获取了一个

Flight
对象:

my_flight = Flight.objects.get(pk=1)  # Flight object with pk=1

然后您可以通过以下方式获得

my_flight
的乘客:

my_flight.passengers.all()

它不适用于

Flight
class,唯一合理的反应是返回所有至少有
one
航班的 Passenger。您可以通过以下方式做到这一点:

# Passengers linked to at least one Flight
Passenger.objects.filter(flights__isnull=False).distinct()
© www.soinside.com 2019 - 2024. All rights reserved.