Как создать отношения между django моделями - PullRequest
1 голос
/ 03 марта 2020

У меня есть две модели: одна модель пользователя, а другая модель контакта.

Модель контакта выглядит следующим образом:

class Contact(models.Model):  
    pass
    user          = models.ForeignKey(settings.AUTH_USER_MODEL, default=1, null=True, on_delete=models.CASCADE, verbose_name=_('User'), related_name="user")
    contact       = models.ForeignKey(settings.AUTH_USER_MODEL, default=1, null=True, on_delete=models.CASCADE, verbose_name=_('Contact'), related_name="contact")
    created_at    = models.DateTimeField(auto_now=False, auto_now_add=True)
    updated_at    = models.DateTimeField(auto_now=True, auto_now_add=False)
    is_contact    = models.BooleanField(default=False)

создать контакт для пользователя. Вид запроса дружбы и принятия простой модели. Таким образом, пользователь, вошедший в систему (request.user), может быть contact.user или contact.contact.

И settings.AUTH_USER_MODEL - это модель CustomUser:

class CustomUser(AbstractUser):
    pass
    email = models.EmailField(unique=True)
    first_name = models.CharField(max_length=20, default="", blank=True)
    last_name = models.CharField(max_length=20, default="", blank=True)

Как создать отношения, где я могу связаться с пользователями, выполнив что-то вроде этого:

// get user contacts user=CustomUser.objects.get(pk=1)
user.contacts.objects.all()

1 Ответ

1 голос
/ 03 марта 2020

Обычно вы запрашиваете обратные отношения , используя ключевое слово related_name, которое по умолчанию равно contact_set:

user.contact_set.all()

Если вы хотите изменить имя этой обратной связи, вам нужно сделать это в модели Contact, используя related_name:

class Contact(models.Model):  
    user = models.ForeignKey(settings.AUTH_USER_MODEL, related_name="contacts", ...)


user.contacts.all()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...