2012-08-16 44 views
0

我试图让某个特定职位存在的国家/地区,以便我只能显示这些国家/地区。这样做。我有以下代码。django查询中的简单反向

型号:

class Country(models.Model): 
    name=models.CharField(max_length=100) 
    iso_code_2=models.CharField(max_length=4) 
    iso_code_3=models.CharField(max_length=4) 
    def __unicode__(self): 
     return self.name 
    def get_countries_with_jobs(self): 
     countries=self.objects.filter(id__in=Post.country) 
     return countries 


class Category(models.Model): 
    name=models.CharField(max_length=100) 
    title=models.CharField(max_length=100) 
    meta_keywords=models.CharField(max_length=100) 
    meta_description=models.CharField(max_length=100) 
    sort_order=models.IntegerField() 
    def __unicode__(self): 
     return self.name 

class City(models.Model): 
    name=models.CharField(max_length=100) 
    title=models.CharField(max_length=100) 
    meta_keywords=models.CharField(max_length=100) 
    meta_description=models.CharField(max_length=100) 
    sort_order=models.IntegerField() 
    country=models.ForeignKey(Country) 
    def __unicode__(self): 
     return self.title 

class Post(models.Model): 
    user=models.ForeignKey(User) 
    title=models.CharField(max_length=100) 
    publish_date=models.DateField() 
    active=models.BooleanField() 
    country=models.ForeignKey(Country) 
    city=ChainedForeignKey(City,chained_field="country",chained_model_field="country") 
    category=models.ForeignKey(Category) 
    description=models.TextField() 
    added_by=models.CharField(max_length=70) 
    def __unicode__(self): 
     return self.title 

这里get_countries_with_jobs方法有试图查询并获得其中存在后的国家代码。通常情况下,一个访问国的某个职位,但在这种情况下,我需要得到邮政存在的国家。在调用这个方法时,它给出了错误,所以我试图在view方法中写下如下代码。

def list(request,template_name='list_posts.html'): 
    countries=Country.objects.filter(id__in=Posts.country) 
    return render_to_response(template_name,locals(),context_instance=RequestContext(request)) 

回答

1

你提的问题是很难理解,所以我会看到一对夫妇解释:

  1. 你想要得到的特定讯息国家:

    countries = Country.objects.filter(post=post_instance) 
    
  2. 你想得到所有有任何职位的国家:

    countries = Country.objects.filter(post__isnull=False) 
    

    同样,如果你想获得国家的有与之相关的帖子:

    countries = Country.objects.filter(post__isnull=True) 
    
+0

我想第二个,我应该使用它在视图或我应该有它的国家模型作为一种功能? – Hafiz 2012-08-16 18:34:49

+0

你也可以做,但对于这样一个简单的过滤器,将它添加到模型中并没有太多的意义。 – 2012-08-16 18:39:36

+0

但这不适用于我,我有一个国家有帖子,但它没有显示使用选项2中的代码。 – Hafiz 2012-08-16 18:51:56