如何对与ForeignKey Django关联的对象进行分类

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何对与ForeignKey Django关联的对象进行分类相关的知识,希望对你有一定的参考价值。

我有两个模型类

class Category(models.Model):
    name = models.CharField(max_length=200)

    def __str__(self):
        return self.name

class Site(models.Model):
    name = models.CharField(max_length=200)
    category = models.ForeignKey('Category', on_delete=models.SET_NULL, null=True)
    link = models.CharField(max_length=200)
    timestamp = models.DateTimeField(auto_now=False, auto_now_add=True)


    def __str__(self):
        return self.name

因此,在模板中,我想将具有相同类别的网站分类(组合在一起)。因为在主页上会有所有类别的链接

            {% for category in category_list %}
            <li><a href="">{{ category.name }}</a></li>
            {% endfor %}

当您单击类别的链接时,将显示具有相同类别的网站。我怎么做?

答案

views.朋友

from django.views.generic import ListView

class SiteView(ListView):
    template_name = 'site.html'
    context_object_name = 'site_list'
    paginate_by = 8

    def get_category(self):
        category_id = self.request.GET.get('category', '')
        if category_id:
            try:
                category = Category.objects.get(id=category_id)
            except ObjectDoesNotExist:
                category = None
        else:
            category = None
        return category

    def get_queryset(self):
        category = self.get_category()
        if category:
            return Site.objects.filter(category=category).all()
        else:
            return Site.objects.all()

URLs.朋友

   url(r'^site/$', SiteView.as_view(), name='site'),

模板

        {% for category in category_list %}
            <li><a href="{% url 'site' %}?category={{ category.id }}">{{ category.name }}</a></li>
        {% endfor %}
另一答案

views.朋友

from django.shortcuts import get_list_or_404, get_object_or_404

def category_view(request):
    category_list = get_list_or_404(Category)
    context = {'category_list': category_list}
    return render(request, '-your_templates-/category.html', context)

def site_view(request, cat_id):
    category = get_object_or_404(Category, pk=cat_id)
    context = {'category': category}
    return render(request, '-your_templates-/site.html', context)

URLs.朋友

url(r'^category/$', views.category_view, name='category'), 
url(r'^category/(?P<cat_id>[0-9]+)/$', views.site_view, name='site'),

category.html

{% for category in category_list %}
    <li><a href="{% url 'app_name:site' category.id %}">{{ category.name }}</a></li>
{% endfor %}

我希望这有帮助。

以上是关于如何对与ForeignKey Django关联的对象进行分类的主要内容,如果未能解决你的问题,请参考以下文章

python测试开发django-37.外键(ForeignKey)查询

浅析“关于区块链解决资本主义问题还是社会主义问题”的对与错

任何人都可以仅使用 ForeignKey 在两个 django 模型之间建立多对多关系吗?

django一个app中的表想要建外键关联另一个app中的表要如何实现?

Django:如何向后跟随 ForeignKey('self')

Django -- 一对多建表增删改查