Python 如何使用本身是外键的字段获取Django模型的对象列表?

Python 如何使用本身是外键的字段获取Django模型的对象列表?,python,django,django-models,Python,Django,Django Models,目前,我的模型如下所示: class MainCategory(models.Model): main_category = models.CharField(max_length = 25) def __str__(self): return str(self.main_category) class SubCategory(models.Model): main_category = models.ForeignKey(MainCategory)

目前,我的模型如下所示:

class MainCategory(models.Model):
    main_category = models.CharField(max_length = 25)

    def __str__(self):
        return str(self.main_category)

class SubCategory(models.Model):
    main_category = models.ForeignKey(MainCategory)
    sub_category = models.CharField(max_length = 50)

    def __str__(self):
        return str(self.main_category) + ' | ' + self.sub_category

class Article(models.Model):
    category = models.ForeignKey(SubCategory)
我这样做是为了让每件事都分开,并且可以独立访问。因此,有些文章的主要类别是“娱乐”。 也就是说,self.category.main_category='Entertainment'。我的问题是,如何获得所有具有相同主类别的文章

我尝试了Article.objects.filter(category\uu main\u category='Entertainment'),但这似乎不起作用。 该错误对于以10为基数的int()无效:“娱乐” 有什么想法吗


非常感谢您提供的任何帮助。

根据您的模型,似乎是:

Article.objects.filter(category__main_category__main_category='Entertainment')
您的模型中有一些间接性,因此下面是一个图表:

Article.objects.filter(category__main_category__main_category='Entertainment')
                       ^         ^               ^ 
                       |         |               |_ MainCategory.main_category
                       |         |_ Subcategory.main_category
                       |_ Article.category                     
您的错误
该错误对于int()无效,以10为基数:“Entertainment”
只是因为您查询的是
category\uuu main\u category
,它是指向
子类别的FK,因此它试图将其转换为主键(例如
int


Django docs on relationships querying

您收到错误,因为
category\uuuuu main\u category
需要一个
maincegory
实例或其主键。因此,它应该是:

Article.objects.filter(category__main_category__main_category = 'Entertainment')
此外,要获得“所有具有相同主类别的文章”,您必须实际执行以下操作

Article.objects.filter(category__main_category=category_instance)

其中,
category\u实例
必须从提供给应用程序用户的某个类别列表中选择。否则,您只需按主类别名称进行搜索,而主类别名称没有标识类别,因为它没有标记为主键或唯一。

问得好。如果你接受了解决问题的答案,那就太好了!