Django: Сопоставьте две модели по одному и тому же полю, которое они имеют

У меня есть 2 модели. User модель

class User(TimeStampedModel):
    phone_number = models.CharField(
        _('Phone number'),
        null=True,
        blank=True,
        max_length=30,
    )
    reservations = models.ManyToManyField(
        'Reservation',
        related_name='Users',
        verbose_name=_('Reservations'),
    )

и Reservation модель:

class Reservation(TimeStampedModel):
    phone_number = models.CharField(
        _('Phone number'),
        null=True,
        blank=True,
        max_length=30,
    )

Как вы видите, между ними существует ManyToManyField связь. Здесь мне нужно получить такую user, которая phone_number совпадает с Reservation моделью phone_number

Как я могу получить эту user

# retrieving the first reservation
# You can use .get(id=xxx) instead of first
# if you want to use an specific reservation
reservation = Reservation.objects.first()
# Get the first user related with the reservation
reservation.Users.first()

Рекомендую добавить unique=True к phone_number в модели User, чтобы избежать дубликатов. Также для того, чтобы гарантировать, что резервирование принадлежит только одному пользователю.

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