Получить данные из набора запросов и передать в шаблон в django - PullRequest
0 голосов
/ 25 апреля 2020

У меня есть модель, как показано ниже:

class Artwork(models.Model):
title              =     models.CharField(max_length=120)
collection         =     models.CharField(max_length=120,null=True)
slug               =     models.SlugField(blank=True, unique=True)
description        =     models.TextField()
price              =     models.DecimalField(decimal_places=2, max_digits=20, default=0)
image              =     models.ImageField(upload_to=upload_image_path, null=True, blank=True)
banner             =     models.ImageField(upload_to='artworks/banner')
video              =     models.FileField(upload_to='artworks/video',blank=True,null=True)
category           =     models.CharField(choices=CATEGORY_CHOICES, max_length=15)
views_count        =     models.IntegerField(default=150)
featured           =     models.BooleanField(default=False)
active             =     models.BooleanField(default=True)
created            =     models.DateTimeField(default=timezone.now)

и Вид, как показано ниже:

def artwork_list_view(request):
queryset    = Artwork.objects.all()
context = {
    'objet_list':queryset,
}
return render(request, "artworks/list.html", context)

Я использую набор запросов в шаблоне, как показано ниже:

   <div style='min-height:80px;'><p >First Collection</p></div>

    {% for obj in object_list  %}
        <div  class="workSeriesThumbnailStrip">
                {% if obj.image %}
            <a href="{{ obj.get_absolute_url }}"><img src="{{ obj.image.url }}" style="float:left;width:67px;height:87px;margin:10px;" ></a>
            {% endif %}

        </div>
    {% endfor %}
   </div>

знаю, у меня более одной коллекции, и я хочу разместить в коллекциях значение l oop, чтобы элементы каждой коллекции отображались в одном ряду. Но так как я новичок в django, я не знаю, как получить список коллекций и передать их в шаблон. пожалуйста, помогите мне.

Ответы [ 3 ]

0 голосов
/ 25 апреля 2020

Вы также можете перебирать объекты obj.collections. Как это

        {% for obj in object_list %} <div class="workSeriesThumbnailStrip"> 
{% if obj.image %} 
<a href="{{ obj.get_absolute_url }}">
<img src="{{ obj.image.url }}" style="float:left;width:67px;height:87px;margin:10px;" ></a> 
{% endif %} 
</div>
    {%for collection in obj.collections%}
    <Div>{{colection}}<div/>
    {%end for%}
     {% endfor %}
0 голосов
/ 27 апреля 2020
 from django.http import Http404
 from django.views.generic import ListView, DetailView, TemplateView
 from django.shortcuts import render, get_object_or_404
 from django.core.paginator import EmptyPage, PageNotAnInteger, Paginator
 from .models import Artwork


 class ArtworkFeaturedListView(ListView):
 template_name = "artworks/list.html"
 def get_queryset(self, *args, **kwargs):
     request = self.request
     return Artwork.objects.all().featured()

 class ArtworkFeaturedDetailView(DetailView):
     queryset = Artwork.objects.all().featured()
     template_name = "artworks/featured-detail.html"

 class ArtworkListView(ListView):

     template_name = "artworks/list.html"

     def get_queryset(self, *args, **kwargs):
         request = self.request
         return Artwork.objects.all()
 class ArtworkCategory(ListView):
     model = Artwork
     paginate_by = 20

     def get_queryset(self):
         self.category = self.kwargs['category']
         return Artwork.objects.filter(category=self.category)


     def get_context_data(self, **kwargs):
         context = super(ArtworkCategory, self).get_context_data(**kwargs)
         context['artwork_category'] = self.category
         return context



 class ArtworkCollection(ListView):
     model = Artwork
     paginate_by = 20

     def get_queryset(self):
         self.collection = self.kwargs['collection']
         return Artwork.objects.filter(collection=self.collection)

     def get_context_data(self, **kwargs):
         context = super(ArtworkCollection, self).get_context_data(**kwargs)
         context['artwork_collection'] = self.collection
         return context


     queryset    = Artwork.objects.all()
     context = {
         'object_list':queryset,
     }
     return render(request, "artworks/list.html", context)


 class ArtworkSearch(ListView):
     model = Artwork
     paginate_by = 5

     def get_queryset(self):
         query = self.request.GET.get('query')
         if query:
             object_list = self.model.objects.filter(title__icontains=query)

         else:
             object_list = self.model.objects.none()
         return object_list

 class ArtworkDetailSlugView(DetailView):
     queryset = Artwork.objects.all()
     template_name = "artworks/detail.html"

     def get_object(self, *args, **kwargs):
     request = self.request
     slug = self.kwargs.get('slug')
     instance = get_object_or_404(Artwork, slug=slug, active=True)
     return instance

 class ArtworkDetailView(DetailView):
     template_name = "artworks/detail.html"
     def get_context_data(self, *args, **kwargs):
         context = super(ArtworkDetailView, self).get_context_data(*args, **kwargs)        
         print(context)
        return context

    def get_object(self, *args, **kwargs):
        request = self.request
        pk = self.kwargs.get('pk')
        instance = Artwork.objects.get_by_id(pk)
        if instance is None:
            raise Http404("artwork doesn't exist")
        return instance

 def artwork_detail_view(request, pk=None, *args, **kwargs):
     instance = Artwork.objects.get_by_id(pk)
     if instance is None:
         raise Http404("artwork doesn't exist")
     context = {
         'object':instance
     }
    return render(request, "artworks/detail.html", context)
0 голосов
/ 25 апреля 2020

В ключе object_list есть опечатка

context = {
    'objet_list':queryset,
}
...