2010-09-08 2 views
0

Как я могу ТОЛЬКО категории, где есть хотя бы одна «Почта», связанная ??, надейтесь, что это имеет смысл !?Фильтр модели Django, в зависимости от ссылки exesisteing

**models.py** 
class Category(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) 

    def __unicode__(self): 
     return self.name 

**view.py:** 
def index(request): 
    categories = category.objects.filter(???) 

Как я только категория, где есть по крайней мере один «пост», связанные ??, надеюсь, что это имеет смысл !?

ответ

0
categories = Category.objects.exclude(post=None) 
+0

Я получил это, чтобы работать! Благодаря... – pkdkk

0

models.py

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

    def __unicode__(self): 
     return self.name 

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

    def __unicode__(self): 
     return self.name 

views.py

def index(request): 
    categories = Category.objects.filter(post__isnull=False) 

Каждый ForeignKey имеют обратную связь со своей родительской модели, поэтому певце должны поместить ForeignKey Послать модель и post__isnull = False вернет только те категории, которые имеют обратное отношение к некоторым постов ...

+0

Ups- мой плохой -класса сообщение (models.Model): имя = models.CharField (max_length = 50) категории = models.ManyToManyField (категория) Защиту __unicode __ (Я): возвращение self.name – pkdkk

+0

A " пост "может иметь более одной категории! – pkdkk