【问题标题】:simple reverse in query in djangoDjango中的简单反向查询
【发布时间】:2012-08-16 17:35:57
【问题描述】:

我正在尝试获取存在某些特定帖子的国家/地区,以便我只能显示这些国家/地区。这样做。我有以下代码。

型号:

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 方法具有尝试查询和获取帖子所在国家/地区的代码。通常某个帖子的一个访问国家/地区,但在这种情况下,我需要获取存在帖子的国家/地区。这里调用此方法时出错,因此我尝试在视图方法中编写此代码,如下所示。

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))

【问题讨论】:

    标签: django django-models django-database


    【解决方案1】:

    你的问题很难理解,所以我会看几个解释:

    1. 您想要获取特定帖子的国家/地区:

      countries = Country.objects.filter(post=post_instance)
      
    2. 您想获取所有有帖子的国家/地区:

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

      同样,如果您想获取没有与它们相关联的帖子的国家/地区:

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

    【讨论】:

    • 我想要第二个,我应该在视图中使用它还是应该在国家模型中使用它作为函数?
    • 你可以做任何一个,但是对于这样一个简单的过滤器,将它添加到模型中并没有什么意义。
    • 但这对我不起作用,我有一个国家有帖子,但它没有显示使用选项 2 中的代码。
    • 更新您的问题以逐字包含您现在拥有的内容。这是一个非常简单的查询,我知道它有效;也许你刚刚得到了一些不太正确的东西。
    • countries 上没有 object_list 属性。这来自你没有使用的分页,即使你使用了,它也只是object_list,而不是countries.object_list
    猜你喜欢
    • 2019-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-20
    • 2014-10-03
    • 1970-01-01
    • 2021-12-16
    • 2023-03-08
    相关资源
    最近更新 更多