如何解决Python django查询数据库,并在列表中获取所有FK
我是django的新手,我正在努力实现Rest API。我的问题是查询,无论花多少时间都找不到有效的解决方案。更具体地说,我有以下两种模型:
class Subcategory(models.Model):
id = models.UUIDField(primary_key=True,editable=False,null=False,blank=False,default=uuid.uuid4)
name = models.CharField(max_length=50,blank=False)
category = models.ForeignKey(Category,on_delete=models.CASCADE,db_column='category')
class Category(models.Model):
id = models.UUIDField(primary_key=True,null=False)
image = models.CharField(max_length=100,default=None)
如您所见,每个类别都有一个或多个子类别,在子类别模型中,我具有该类别的外键。我想做的是查询我的数据库,获取所有类别,并向每个类别添加一个带有子类别列表的额外字段子类别。我的想法是使用.select_related遵循FK,但这似乎是错误的解决方案,因为我遇到以下错误:
"message": "name 'subcategory__category' is not defined"
我的查询是:
Category.objects.all().select_related(subcategory__category).values()
关于如何解决此问题并找到实现查询的方法的任何想法?
提前谢谢
解决方法
这样做
class Category(models.Model):
id = models.UUIDField(primary_key=True,editable=False,null=False,blank=False,default=uuid.uuid4)
name = models.CharField(max_length=50,null=False)
image = models.CharField(max_length=100,default=None)
sub_cat = ManyToManyField(Subcategory,blank=True)
class Subcategory(models.Model):
id = models.UUIDField(primary_key=True,default=uuid.uuid4)
name = models.CharField(max_length=50,blank=False)
def __str__(self):
return self.name
现在,查询部分
temp = []
all_cat = Category.objects.all()
for cat in all_cat:
temp.append( list(cat.sub_cat.all()) )
我认为这是您想要做的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。