Mysql 如何实现由其他用户引用的Django用户关系?

Mysql 如何实现由其他用户引用的Django用户关系?,mysql,sql,django,django-models,one-to-many,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.CA

我想在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'.

如何实现这一点?

只需省略
referedby=models.ForeignKey(User,on_delete=models.CASCADE)
,因为
OneToOneField
已经引用了
Users

如果出于某种原因,您需要两列(我不明白为什么),您可以更改模型的
相关\u 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)

只需省略
referedby=models.ForeignKey(User,on_delete=models.CASCADE)
,因为
OneToOneField
已经引用了
Users

如果出于某种原因,您需要两列(我不明白为什么),您可以更改模型的
相关\u 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)

我不知道是谁推荐了每个用户。当以“john”身份登录时,我希望能够显示“john”引用的所有用户。@NirmalMulji您是否尝试更改
相关的\u name
属性?这很有效。我现在可以使用以下命令查询其他用户引用的所有用户:referrals=Referral.objects.filter(referredBy=user\u id)您能解释一下为什么需要“related\u name”属性吗?我不太确定,但我认为这与Django为外键关系选择的名称有关。如果您引用同一个表两次,它将尝试将两个外键命名为相同的名称,但您不能这样做。我无法跟踪谁引用了每个用户。当以“john”身份登录时,我希望能够显示“john”引用的所有用户。@NirmalMulji您是否尝试更改
相关的\u name
属性?这很有效。我现在可以使用以下命令查询其他用户引用的所有用户:referrals=Referral.objects.filter(referredBy=user\u id)您能解释一下为什么需要“related\u name”属性吗?我不太确定,但我认为这与Django为外键关系选择的名称有关。如果您引用同一个表两次,它将尝试将两个外键命名为相同的名称,但您不能这样做。您是否尝试按照提示中的说明进行命名?是否尝试按照提示中的说明进行命名?