2010-09-13 10 views
6

models.pyDjango चयन अलग

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 

view.py:

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

    categories = Category.objects.filter(post__genders=1) 
           .exclude(post=None).order_by('-sort') 

क्यों मैं एक ही श्रेणी में 3 बार मिलता है, अगर वहाँ 3 पदों जहां लिंग के बराबर है कर रहे हैं 1 ?? मुझे केवल श्रेणी 1 की आवश्यकता है, जिसे मैं चुनता हूं जैसे "अलग चुनें" - मैं ऐसा कैसे कर सकता हूं ??

उत्तर

15

क्या आपने क्वेरीसेट में .distinct() संलग्न करने का प्रयास किया था?

categories = Category.objects.filter(post__genders=1).exclude(post= 
     None).order_by('-sort').distinct() 
+0

बहुत बहुत धन्यवाद! : डी ... यह आसान है;) – pkdkk

संबंधित मुद्दे