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实例
必须从提供给应用程序用户的某个类别列表中选择。否则,您只需按主类别名称进行搜索,而主类别名称没有标识类别,因为它没有标记为主键或唯一。问得好。如果你接受了解决问题的答案,那就太好了!