2012-08-16 64 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