@Kamral
ПРОГРАММИСТ

Почему выдает пустой queryset вместо записей?

from django.urls import path
from .views *

urlpaterns=[
    path('product/<int:pk>/', product_detail, name='product_detail'),
]


#urls.py


#views.py
def product_detail(request,pk):
    products=product.objects.filter(pk=pk)
    title_spisok=spisok.objects.filter(product=pk)
    punkt=punkt_of_spisok.objects.filter(spisok=pk)
    return render(request,'product_detail.html', {'products':products,
                                                  'title_product':title_spisok,
                                                  'punkts':punkt
                                                  })
#models.py
class punkt_of_spisok(models.Model):
    punkt=models.CharField(max_length=255, verbose_name='Пукт')
    spisok=models.ForeignKey('spisok',on_delete=models.CASCADE)

class spisok(models.Model):
    title=models.CharField(max_length=255, verbose_name='Заголовок списка')
    product=models.ForeignKey('product', verbose_name='Продукт', on_delete=models.CASCADE)
  • Вопрос задан
  • 453 просмотра
Решения вопроса 1
@Kamral Автор вопроса
ПРОГРАММИСТ
твое решение оказалось не правильным.
вернее будет прописать :
punkt=punkt_of_spisok.objects.filter(spisok__product=pk) -
мы здесь указываем, что фильруем данные punkt_of_spisok по внешнему ключ product модели spisok, и забираем все записи. На выходе, мы получаем пункты относящиеся конкретному списку заголовков которые свою очередь принадлежат конкретному продукту. То есть мы сформировали полноценную связь
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@kyern
Быдлокодер без стажа
А какой из трех queryset пуст?
И вы уверены что он именно пуст? Вы переменную context не передаете в рендер https://docs.djangoproject.com/en/3.1/topics/http/...
Должно быть
return render(request,'product_detail.html', context={'products':products,
                                                  'title_product':title_spisok,
                                                  'punkts':punkt
                                                  })

P.S. Еще раз глянул документацию, там тоже context передается позиционным аргументом, а не именованным.
Но вообще вы punkt_of_spisok дерагете по первичному ключу продукта, а не списка.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы