Python 如何在django中获取唯一值
我有一个类别模型和与这些类别相关的帖子列表,也有一些具有相同类别名称的帖子,但当我想在模板中列出类别部分时, 它显示类别的重复名称,因为它与以下帖子相关: 食物, 食物 沙漠 风格 沙漠 但我想要的是: 食物, 沙漠 风格 这是我的密码: 视图.pyPython 如何在django中获取唯一值,python,django,django-models,django-templates,django-views,Python,Django,Django Models,Django Templates,Django Views,我有一个类别模型和与这些类别相关的帖子列表,也有一些具有相同类别名称的帖子,但当我想在模板中列出类别部分时, 它显示类别的重复名称,因为它与以下帖子相关: 食物, 食物 沙漠 风格 沙漠 但我想要的是: 食物, 沙漠 风格 这是我的密码: 视图.py class ListCategory(ListView): model = Post paginate_by = 2 template_name = 'shit.html' context_object_name =
class ListCategory(ListView):
model = Post
paginate_by = 2
template_name = 'shit.html'
context_object_name = 'queryset'
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
cate = Post.objects.all()
context['cate'] = cate
return context
class Category(models.Model):
title = models.CharField(max_length=20)
thumbnail = models.ImageField()
detail = models.TextField()
featured = models.BooleanField(default=True)
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse('post-category', kwargs={
'pk': self.pk
})
class Post(models.Model):
title = models.CharField(max_length=100)
overview = models.TextField()
featured = models.BooleanField(default=True)
timestamp = models.DateTimeField(auto_now_add=True)
user = models.ForeignKey(Author,on_delete=models.CASCADE)
thumbnail = models.ImageField()
category = models.ForeignKey(Category, on_delete=models.CASCADE)
tags = TaggableManager()
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse('post-detail', kwargs={
'pk': self.pk
})
class ListCategory(ListView):
model = Category
paginate_by = 2
template_name = 'shit.html' # :)
context_object_name = 'queryset'
型号.py
class ListCategory(ListView):
model = Post
paginate_by = 2
template_name = 'shit.html'
context_object_name = 'queryset'
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
cate = Post.objects.all()
context['cate'] = cate
return context
class Category(models.Model):
title = models.CharField(max_length=20)
thumbnail = models.ImageField()
detail = models.TextField()
featured = models.BooleanField(default=True)
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse('post-category', kwargs={
'pk': self.pk
})
class Post(models.Model):
title = models.CharField(max_length=100)
overview = models.TextField()
featured = models.BooleanField(default=True)
timestamp = models.DateTimeField(auto_now_add=True)
user = models.ForeignKey(Author,on_delete=models.CASCADE)
thumbnail = models.ImageField()
category = models.ForeignKey(Category, on_delete=models.CASCADE)
tags = TaggableManager()
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse('post-detail', kwargs={
'pk': self.pk
})
class ListCategory(ListView):
model = Category
paginate_by = 2
template_name = 'shit.html' # :)
context_object_name = 'queryset'
模板
{% extends "base.html" %}
{% load static %}
{% block content %}
<div class="sidebar-box ftco-animate">
<ul class="categories">
<h3 class="heading mb-4">Categories</h3>
{% for cat in cate %}
<li><a href="{% url 'post-category' cat.category.pk %}">{{cat.category}}<span>(12)</span></a></li>
{% endfor %}
</ul>
</div>
{% endblock content %}
{%extends“base.html”%}
{%load static%}
{%block content%}
类别
{cate%中的cat为%1}
{%endfor%}
{%endblock内容%}
非常感谢你 您可以在所需字段中使用
unique=True
,使每个值唯一。如果您试图添加具有相同值的unique
字段的新记录,将引发django.db.IntegrityError
似乎你想根据你的
帖子的类别对其进行分组;因此,您可以通过迭代类别
(而不是Post
),并使用向后关系查找相关的Post
对象来实现这一点
视图.py
class ListCategory(ListView):
model = Post
paginate_by = 2
template_name = 'shit.html'
context_object_name = 'queryset'
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
cate = Post.objects.all()
context['cate'] = cate
return context
class Category(models.Model):
title = models.CharField(max_length=20)
thumbnail = models.ImageField()
detail = models.TextField()
featured = models.BooleanField(default=True)
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse('post-category', kwargs={
'pk': self.pk
})
class Post(models.Model):
title = models.CharField(max_length=100)
overview = models.TextField()
featured = models.BooleanField(default=True)
timestamp = models.DateTimeField(auto_now_add=True)
user = models.ForeignKey(Author,on_delete=models.CASCADE)
thumbnail = models.ImageField()
category = models.ForeignKey(Category, on_delete=models.CASCADE)
tags = TaggableManager()
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse('post-detail', kwargs={
'pk': self.pk
})
class ListCategory(ListView):
model = Category
paginate_by = 2
template_name = 'shit.html' # :)
context_object_name = 'queryset'
模板:
{% extends "base.html" %}
{% load static %}
{% block content %}
<div class="sidebar-box ftco-animate">
<ul class="categories">
<h3 class="heading mb-4">Categories</h3>
{% for category in queryset %}
<li><a href="{% url 'post-category' category.pk %}">{{category}}<span>{{ category.posts_set.count }}</span></a></li>
<ul>
{% for post in category.post_set.all %}
<li><a href="{% url 'post-detail' post.pk %}">{{ post }}</a></li>
{% endfor %}
</ul>
{% endfor %}
</ul>
</div>
{% endblock content %}
{%extends“base.html”%}
{%load static%}
{%block content%}
类别
{queryset%中类别的%s}
{category.post_set.all%}
{%endfor%}
{%endfor%}
{%endblock内容%}
我也使用{{category.post\u set.count}}
而不是12
,因为我认为您正在查找每个类别中post
对象的数量。那么您想根据它们的类别对post
对象进行分组吗?我想在我的模板中列出唯一的类别部分。。正如您所看到的,当我使用for循环获取所有类别时,由于foreignkey,它显示了重复的名称。但我想要类别的唯一名称如何拥有该功能?为什么不迭代category
来获得它们?如果您想根据类别显示Post
s,请告诉我。是的,兄弟!我该怎么做?有没有可能通过url分类来获得特定的帖子?正如我在分类模型中所了解的,分类的名称是唯一的,但正如你们在帖子模型中所看到的,foreignkey允许一个分类可以有多篇帖子,因为它显示了重复的名称,但我不想在分类部分多次看到相同的分类名称,非常感谢!非常感谢兄弟!这几天我一直在做这件事…一切都很好只是…但它没有显示类别的数量{{category.posts\u set.count}}我能知道为什么吗?很乐意帮助。它应该是{{category.post_set.count}
;只是一个额外的s
:)酷兄弟!兄弟,如果你不介意的话,有没有什么方法可以让我在这段时间里和你谈谈:)你可以在我的个人资料上找到联系信息(twitter)。兄弟,你能解释一下你没有任何关于{%for post in category.post_set.all%}的上下文吗?但是这个东西是如何工作的?你的twitter不允许我敲你,你看起来像是禁用了文本:(…我有一些话要和大家分享:|