Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在django中获取唯一值_Python_Django_Django Models_Django Templates_Django Views - Fatal编程技术网

Python 如何在django中获取唯一值

Python 如何在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 =

我有一个类别模型和与这些类别相关的帖子列表,也有一些具有相同类别名称的帖子,但当我想在模板中列出类别部分时, 它显示类别的重复名称,因为它与以下帖子相关:

食物, 食物 沙漠 风格 沙漠 但我想要的是:

食物, 沙漠 风格 这是我的密码:

视图.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'
型号.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不允许我敲你,你看起来像是禁用了文本:(…我有一些话要和大家分享:|