如何对与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中的表要如何实现?