Django选择不同

pkd*_*dkk 9 django django-orm

models.py

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

    def __unicode__(self):
        return self.name

class Gender(models.Model):
    name = models.CharField(max_length=50)

    def __unicode__(self):
        return self.name

class Post(models.Model):
    name = models.CharField(max_length=50)
    categories = models.ManyToManyField(Category)
    genders = models.ManyToManyField(Gender)

    def __unicode__(self):
        return self.name
Run Code Online (Sandbox Code Playgroud)

view.py:

def index(request):
    posts = Post.objects.filter(genders=1)

    categories = Category.objects.filter(post__genders=1)
                                 .exclude(post=None).order_by('-sort')
Run Code Online (Sandbox Code Playgroud)

如果有3个性别等于1的帖子,为什么我会获得3次相同的类别?我只需要类别1时间我选择像"选择不同" - 我怎么能这样做?

Man*_*dan 23

您是否尝试将a附加.distinct()到查询集?

categories = Category.objects.filter(post__genders=1).exclude(post=
      None).order_by('-sort').distinct()
Run Code Online (Sandbox Code Playgroud)