Django как получить объект одним запросом к базе данных
models.py
class Post(models.Model):
pass
@property
def views_count(self):
return PostViews.objects.filter(post=self).count()
class PostViews(models.Model):
IPAddres= models.GenericIPAddressField(default="")
post = models.ForeignKey(Post, on_delete=models.CASCADE, related_name="post_views_count",)
date = models.DateTimeField(auto_now_add=True)
views.py
def get_posts(request, topic=""):
posts = Post.objects.filter(status=Post.OPEN).select_related('author').prefetch_related('tags').select_related('category').select_related('post_views_count')
posts.hml
{% for post in posts %}
{{ post.views_count }}
{% endfor %}
В связи с вызовом представлений, количество sql запросов увеличивается на 10 hits.Как мне получить эти данные в месте с данными, полученными моделью Post?
Полагаю, вы забыли про параметр 'context', который нужно передать в HTML-файл, чтобы помочь DTL (Django Template Language) прочитать модель. Здесь я напишу пример для вас:
def get_posts(request, topic=""):
posts = Post.objects.filter(status=Post.OPEN).select_related('author').prefetch_related('tags').select_related('category').select_related('post_views_count')
context = {'post': Post.object.all()}
return render(request,'file.html',context)
Надеюсь, я решил вашу проблему, если нет, пожалуйста, свяжитесь со мной, я постараюсь помочь вам больше, Всего вам наилучшего.