Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
同一类Django的两个外键_Django_Django Models_Django Forms_Django Templates_Django Views - Fatal编程技术网

同一类Django的两个外键

同一类Django的两个外键,django,django-models,django-forms,django-templates,django-views,Django,Django Models,Django Forms,Django Templates,Django Views,如何访问同一类的两个外键 class Countries(models.Model): name = models.CharField(max_length=200,null=True) class bookings(models.Model): Pickup = models.ForeignKey(Countries,on_delete=models.CASCADE,null=True) Dropoff = models.ForeignKey(Countries,o

如何访问同一类的两个外键

class Countries(models.Model):
    name = models.CharField(max_length=200,null=True)


class bookings(models.Model):
    Pickup = models.ForeignKey(Countries,on_delete=models.CASCADE,null=True)
    Dropoff = models.ForeignKey(Countries,on_delete=models.CASCADE,null=True)

ERROR reverse accessor  of Pickup clashes with reverse accessser  for Dropoff

您必须使用related name关键字,这样默认情况下,反向访问将使用相同的名称,这就是可能发生冲突的原因

 class bookings(models.Model):
   Pickup = models.ForeignKey(Countries,on_delete=models.CASCADE,null=True, related_name="pickup")
   Dropoff = models.ForeignKey(Countries,on_delete=models.CASCADE,null=True, related_name="dropoff")

您必须使用related name关键字,这样默认情况下,反向访问将使用相同的名称,这就是可能发生冲突的原因

 class bookings(models.Model):
   Pickup = models.ForeignKey(Countries,on_delete=models.CASCADE,null=True, related_name="pickup")
   Dropoff = models.ForeignKey(Countries,on_delete=models.CASCADE,null=True, related_name="dropoff")

按以下方式更改您的型号:

class bookings(models.Model):
    Pickup = models.ForeignKey(Countries, on_delete=models.CASCADE, null=True, related_name='pickup_countries')
    Dropoff = models.ForeignKey(Countries, on_delete=models.CASCADE, null=True, related_name='dropoff_countries')

参考资料:

按以下方式更改您的型号:

class bookings(models.Model):
    Pickup = models.ForeignKey(Countries, on_delete=models.CASCADE, null=True, related_name='pickup_countries')
    Dropoff = models.ForeignKey(Countries, on_delete=models.CASCADE, null=True, related_name='dropoff_countries')

参考:

您应该为
预订
模型中的字段定义
相关的\u名称
。像
Pickup=models.ForeignKey(国家/地区,on_delete=models.CASCADE,null=True,related_name='Pickup')
您应该为
booking
model中的字段定义
related_name
。比如
Pickup=models.ForeignKey(国家/地区,on\u delete=models.CASCADE,null=True,相关的\u name='Pickup')