django - 在 ManyToMany 和 ForeignKey 中使用 related_name

django - using of related_name in ManyToMany and in ForeignKey

我有两个型号(也用的是auth.user)。 auth.userRide模型之间有两个关系,Ride模型和 Destination 模型之间有两个关系。

行程有许多个中间目的地和一个个最终目的地。 该游乐设施有 许多 名乘客和 一个 driver.

class Destination(models.Model):
    name=models.CharField(max_length=30)

class Ride(models.Model):
    driver = models.ForeignKey('auth.User', related_name='rides_as_driver')
    destination=models.ForeignKey(Destination)
    leaving_time=models.DateTimeField()
    num_of_spots=models.IntegerField()
    passengers=models.ManyToManyField('auth.User', related_name="rides_as_passenger")
    mid_destinations=models.ManyToManyField(Destination)

我试图完全理解 related_name 属性的含义。我读了很多关于它但仍然不确定...

我还读到如果模型之间有两个关系,我必须使用 related_name。

谁能给我解释一下:

非常感谢!

既然您已经在 documentation 上阅读过它,我将举一个简单的例子。

您有一个 driver,您想要获取 driver 的所有相关游乐设施的列表。例如:

>>> driver = User.objects.first()
  • 不指定related_name:

    >>> driver.ride_set.all()
    
  • 在您的代码中指定 related_name

    >>> driver.rides_as_driver.all()
    

顾名思义,这是您从相关模型访问模型时使用的名称。因此,如果您有一个用户实例,my_user.rides_as_driver.all() 将为您提供 ride.driver == my_user 的所有游乐设施,而 my_user.rides_as_passenger.all() 将为您提供 ride.passengers 包含 [=14= 的所有游乐设施].