class based view django multiple slugs

末鹿安然 提交于 2020-06-17 06:18:09

问题


I have cbt generic listview I want filtering with two slugs. But slug_url_kwargs only allows to pass single string. How can i update slug_url_kwarg to support multiple slugs? Or what can i do else?

So i have this models and view function

class SaityProfile(models.Model):
    user = models.ForeignKey(User, default=0)
    about = models.CharField(max_length=255, blank=True)
    name = models.CharField(max_length=255)
    url = models.CharField(max_length=255, unique=True)

    def __unicode__(self):
        return self.name 

class Saity(models.Model):
    profile = models.ForeignKey('SaityProfile', null=True)
    user = models.ForeignKey(User, null=True)
    name = models.CharField(max_length=250)
    url = models.CharField(max_length=250, default=gen_slug_page)
    desc = models.CharField(max_length=250, blank=True)
    order = models.IntegerField(default=1)

    def get_absolute_url(self):
        return reverse('sites:website_pages', kwargs={'website_slug': self.url})

class WebsitesProfileList(generic.ListView):
    model = Saity
    slug_field = 'url'
    slug_field_kwargs = 'profile_url'
    template_name = 'saity_ds/websites_profile_list.html'

    def get_context_data(self, **kwargs):
        self.profile = SaityProfile.objects.get(url=self.kwargs['profile_url'])
        extra_context = {
            'profile': self.profile 
        }
        context =  super(WebsitesProfileList, self).get_context_data(**kwargs)
        context.update(extra_context)
        return context

My code looks similar like that. I want add new features. I have chosen class based view, and i think it is my mistake, because it is unclear


回答1:


You don't need to set slug_url_kwarg at all. Just override get_queryset and return the queryset that you want your view to display.

class WebsitesProfileList(generic.ListView):
    def get_queryset(self):
        return Saity.objects.filter(url=self.kwargs['url'], profile=self.kwargs['profile'])  # You will probably have to change this
    ...


来源:https://stackoverflow.com/questions/39496766/class-based-view-django-multiple-slugs

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!