两个模型之间的多重一对多关系

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

我正在创建一个路线查找器,并创建了一个具有 start_location 和 Final_location 关系的车辆模型。我希望它们成为外键,因为我不想在选择开始和最终位置时有多个选项,并且外键定义一对多关系,这意味着一个位置可以有多个车辆,但不能有一个车辆与多个地点相关。

如果我创建多个外键字段并连接到位置,Django 会给我一个错误吗?

它会创建多对多关系吗?

class Destination(models.Model):
    name = models.CharField(max_length=100)
    state = models.ForeignKey(State, on_delete=models.CASCADE,related_name="destination")
    country = models.ForeignKey(Country, on_delete=models.CASCADE,related_name="destination")

class vehicle(models.Model):
    start_time = models.CharField(max_length=10)
    reaching_time = models.CharField(max_length=10)
    startdestination = models.ForeignKey(Destination, on_delete=models.CASCADE,related_name="startdestinations")
    subdestination = models.ForeignKey(Destination, on_delete=models.CASCADE,related_name="subdestinations")
    finaldestination = models.ForeignKey(Destination, on_delete=models.CASCADE,related_name="finaldestinations")
    fare = models.IntegerField()
    confirmed = models.BooleanField()
    distance = models.IntegerField()
django django-models foreign-keys many-to-many one-to-many
1个回答
0
投票

如果我创建多个外键字段并连接到位置,Django 会给我一个错误吗?

,因为

related_name=…
 [Django-doc]
related_query_name=…
 [Django-doc]
是唯一的。由于
related_query_name=…
默认为
related_name=…
(如果给定),因此提供唯一的
related_name=…
就足够了,而不是用
given
等效的 ForeignKey 构造
related_query_name=…


注意

related_name=…
参数[Django-doc]reverse 中关系的名称,因此从
Destination
模型到
Vehicle
在这种情况下的模型。因此,将其命名为(通常)没有多大意义 与前向关系相同。因此,您可能需要考虑将
startdestination
关系重命名为
vehicles_started

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.