[英]django - using of related_name in ManyToMany and in ForeignKey
我有两个模型(也使用auth.user)。 auth.user和Ride模型之间有两个关系, Ride模型和Destination模型之间有两个关系。
Ride有许多中间目的地和一个最终目的地。 乘坐有很多乘客和一个司机。
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。
有人可以向我解释一下:
非常感谢!
顾名思义,这是从相关模型访问模型时使用的名称。 所以,如果你有一个用户实例, my_user.rides_as_driver.all()
会给你所有的骑行,其中ride.driver == my_user
, my_user.rides_as_passenger.all()
会给你所有的骑行,其中ride.passengers
包含my_user
。
既然您已经在文档中阅读了它,我将举一个简单的例子。
您有一个驱动程序,并且您想获得驱动程序的所有相关游乐设施的列表。 例如:
>>> driver = User.objects.first()
没有指定related_name
:
>>> driver.ride_set.all()
通过在代码中指定related_name
:
>>> driver.rides_as_driver.all()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.