如何获取django sqlite3中所有记录的属性

时间:2016-03-30 13:15:13

标签: python django sqlite

我的模特

class Article(models.Model) :
    title = models.CharField(max_length = 100)
    category = models.CharField(max_length = 50, blank = True)
    date_time = models.DateTimeField(auto_now_add = True)
    content = models.TextField(blank = True, null = True)

    def __unicode__(self) :
        return self.title

    class Meta:
        ordering = ['-date_time']

如何使列表包含所有类别而不重复?

使用语法:

post_list = Article.objects.filter(category__iexact = tag)

3 个答案:

答案 0 :(得分:2)

您可以使用values_list提取特定字段的所有值。

category_list = Article.objects.values_list('category', flat=True)

从列表中删除重复项:

categories = list(set(category_list))

@Iain指出,您可以使用.distinct()

category_list = Article.objects.values_list('category', flat=True).distinct()

答案 1 :(得分:0)

您要查找的功能是distinct。由于它在数据库层中进行过滤,因此它应该比Python代码中的过滤器更快

post_list = Article.objects.filter(category__iexact = tag).distinct()

答案 2 :(得分:0)

对于至少存在一篇文章的所有类别,您可以执行以下操作:

Category.objects.filter(article_set__isnull=False).distinct()

这也会为您提供QuerySet,与list不同,您可以使用for(var i= 0; i < data.length; i++){ map.addMarker({ 'position': data[i].latLng, 'title' : i }, function(marker){ arrayOfMarkers.push(marker); }) 进行进一步的查询。