Двунаправленная передача данных от одного к другому django

Я хотел бы создать двунаправленные отношения "один ко многим" и "многие к одному" в django, например:

class User(models.Model):
   device = dont_know_what_to_write()

class Device(models.Model):
   user = models.ForeignKey(
     User,
     on_delete = models.CASCADE
   )

Что мне делать?

В Django если вы определяете отношение от A к B, то Django автоматически добавит концептуальное отношение от B к A, которое вы можете запросить. Django, таким образом, уже добавил отношение в обратном направлении. Действительно, если вы реализуете модели с:

class User(models.Model):
    # no device
    pass

class Device(models.Model):
    user = models.ForeignKey(
        User,
        on_delete = models.CASCADE
   )

тогда вы можете получить доступ к набору устройств, связанных с пользователем с:

myuser.device_set.all()

это QuerySet, который будет содержать все Device, которые имеют myuser в качестве user.

Вы можете указать другое имя с помощью параметра related_name=… [Django-doc]:

class Device(models.Model):
    user = models.ForeignKey(
        User,
        on_delete = models.CASCADE,
        related_name='devices'
    )

тогда вы можете получить устройства с помощью:

myuser.devices.all()

Примечание: Обычно лучше использовать settings.AUTH_USER_MODEL [Django-doc] для ссылки на модель пользователя, чем использовать User модель [Django-doc] напрямую. Для получения дополнительной информации вы можете посмотреть ссылка на User модель раздел документации .

Вернуться на верх