не удается получить значения из базы данных django

#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'))