【问题标题】:Two foreign keys of same class Django同一类Django的两个外键
【发布时间】:2018-06-25 10:43:16
【问题描述】:

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

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

【问题讨论】:

  • 你应该为booking模型中的字段定义related_name。喜欢Pickup = models.ForeignKey(Countries,on_delete=models.CASCADE,null=True, related_name='pickup')

标签: django django-models django-forms django-templates django-views


【解决方案1】:

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

 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")

【讨论】:

    【解决方案2】:

    如下更改您的模型:

    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')
    

    参考:Django related_name

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-10
      • 2011-12-04
      • 2014-09-29
      • 1970-01-01
      • 1970-01-01
      • 2014-03-20
      • 2012-07-02
      • 2011-09-14
      相关资源
      最近更新 更多