0

特定の投稿が存在する国を取得して、それらの国のみを表示できるようにしようとしています。そうするために。次のコードがあります。

モデル:

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メソッドには、投稿が存在する国を照会して取得しようとするコードが含まれています。通常、あるポストの1つのアクセス国ですが、この場合、ポストが存在する国を取得する必要があります。ここでは、このメソッドの呼び出し中にエラーが発生したため、このコードを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))
4

1 に答える 1

1

あなたの質問はわかりにくいので、いくつかの解釈を見てみましょう。

  1. 特定の投稿の国を取得したい場合:

    countries = Country.objects.filter(post=post_instance)
    
  2. 投稿があるすべての国を取得したい場合:

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

    同様に、投稿が関連付けられていない国を取得する場合は、次のようにします。

    countries = Country.objects.filter(post__isnull=True)
    
于 2012-08-16T17:52:58.440 に答える