0

我有一个模型如下:

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>

知道我有多个集合,并且想在集合中放置一个 for 循环以在一行中显示每个集合的项目。但由于我是 django 的新手,我不知道如何检索集合列表并将它们传递给模板。请帮我。

4

3 回答 3

0

您也可以遍历 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 %}
于 2020-04-25T19:15:14.157 回答
0
 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)
于 2020-04-27T18:54:47.537 回答
0

object_list键中有错字

context = {
    'objet_list':queryset,
}
于 2020-04-25T19:06:23.620 回答