我创建了一个名为 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()
绕过它,但我不需要它,否则我的数据库之间将没有关系!
这是完全有道理的,
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()