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, чтобы избежать дубликатов. Также для того, чтобы гарантировать, что резервирование принадлежит только одному пользователю.