Как реализовать пользователей Django, на которые ссылаются другие пользователи? - PullRequest
1 голос
/ 31 мая 2019

Я хочу реализовать способ отслеживания рефералов в моем приложении 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 голосов
/ 31 мая 2019

Просто опустите 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)
...