Я новичок в изучении Django, и я работаю на странице, которая отображает только профиль пользователя и отзывы, написанные для этого пользователя (оба в разных моделях).Как связать две разные модели в Django
Часть, о которой я немного не уверен, заключается в том, как связать разные таблицы или модели. То, что я пытаюсь сделать, чрезвычайно элементарно. Довольно сильно, как только вы нажмете на имя пользователя, он перейдет на страницу профиля, в которой также отображаются все отзывы пользователей внизу. Мне интересно, могу ли я использовать переменную вместо «name = ben» и изменить ее на нечто вроде «name = user_you_clicked_on».
Надеюсь, то, что я прошу, имеет смысл и, может быть, я могу быть направлен в правильном направлении. Мне сказали попробовать использовать внешний ключ, но я не уверен, что это то, что я пытаюсь сделать.
from django.shortcuts import render
def index(request):
profile_info = User.objects.filter(name=‘ben’)
context = {‘profile_info’: profile_info}
latest_reviews = UserReview.objects.filter(name=‘ben').order_by('-pub_date')[:5]
context = {‘profile_info’: profile_info, 'latest_reviews': latest_reviews}
return render(request, 'randomtemplate.html', context)
Прошли ли вы с помощью учебника Django? Такая связь между моделями - это то, что она довольно хорошо охватывает. Как правило, вы действительно используете внешний ключ, а не имя, и извлекаете его из URL-адреса. Похоже, что вы сохраняете имя пользователя как поле на модели UserReview', это плохая идея, нарушая стандартные правила нормализации базы данных, а также делая это более сложным. –
Что вы, вероятно, захотите сделать, это добавить отношение внешнего ключа, которое связывает любое количество строк UserReview с пользовательской строкой. См. Объяснение: https://docs.djangoproject.com/en/1.7/topics/db/examples/many_to_one/ – rje
. Кстати, вам не нужно использовать внешний ключ для поиска отзывов пользователей, вы может использовать синтаксис, подобный этому: 'UserReview.objects.filter (user__name = 'ben')'. Предполагается, что вы установили отношение внешнего ключа, где класс модели UserReview имеет атрибут «пользователь», который ссылается на экземпляр пользователя. – rje