如何实现Django用户与其他用户的关联关系?

时间:2019-05-30 22:13:51

标签: mysql sql django django-models one-to-many

我想在django应用程序中实现一种跟踪引用的方法。我正在使用默认的用户表。一个用户可以“推荐”多个人,但是一个推荐用户只能由一个用户推荐。

我尝试将其添加到我的models.py中,但这会导致错误。

class Referral(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    referredBy = models.ForeignKey(User, on_delete=models.CASCADE)

这会导致以下错误:

ERRORS:
RateManager.Referral.referredBy: (fields.E305) Reverse query name for 'Referral.referredBy' clashes with reverse query name for 'Referral.user'.
    HINT: Add or change a related_name argument to the definition for 'Referral.referredBy' or 'Referral.user'.

我该如何实施呢?

1 个答案:

答案 0 :(得分:0)

由于referredBy = models.ForeignKey(User, on_delete=models.CASCADE)已经引用了OneToOneField表,因此只需省略Users

如果出于某些原因需要同时具有这两列(我看不到为什么),则可以更改模型的related_name属性:

class Referral(models.Model):
    user = models.OneToOneField(User, related_name='user', on_delete=models.CASCADE)
    referredBy = models.ForeignKey(User, related_name='referredBy', on_delete=models.CASCADE)