#python #python-3.x #django #django-models #foreign-keys
Вопрос:
У меня есть таблица, из которой я пытаюсь извлечь значения. У него есть два внешних ключа, и это все. Я использую get_or_create в таблице и создаю объект. Я проверяю с помощью панели администратора, что объект находится там. Затем я пытаюсь извлечь его, но не получаю значения, хотя вижу их в панели администратора.
Вот таблица:
class req(models.Model): to = models.ForeignKey(User,on_delete=models.CASCADE) from = models.ForeignKey(User, on_delete=models.CASCADE) def __str__(self): return "request sent"
В приведенном ниже фрагменте кода я извлекаю данные из базы данных и пытаюсь отобразить их так, как они есть в теге p(html). В шаблоне я попытался {{ req.to }} и {{ req.from.first_name }} но напрасно, я не видел никаких значений при отображении html.
def get(self, request): u = get_user(request) try: my_requests = req.objects.get(from=u) except req.DoesNotExist: fr = None if fr == None: return redirect(reverse('myapp:index')) if my_requests != False: context_dict['req'] = my_requests return render(request, 'myapp/req.html', context=context_dict)
Может ли кто-нибудь увидеть проблему, которую я не могу, и прокомментировать ?
Комментарии:
1. Не уверен, что
get_user()
это такое. Я думаю, что вы можете использоватьrequest.user
вместо этого. Затем, поскольку from не является уникальным и может содержать более одного объекта для одного и того же пользователя, вместо этого следует использовать фильтр: my_requests =req.objects.get(from=request.user)
Ответ №1:
В вашем коде есть несколько проблем. вот обновленная версия, которая решает вашу проблему :-
def get(self, request): req_obj, created = req.objects.get_or_create(from=request.user) if created: context_dict['req'] = my_requests return render(request, 'myapp/req.html', context=context_dict) return redirect(reverse('myapp:index'))