【发布时间】:2021-09-15 22:47:21
【问题描述】:
我有 2 个模型,Painting 和 Painter。
class Painting(models.Model):
name = models.CharField(max_length=200)
description = models.TextField()
painter = models.ForeignKey(Painter)
class Painter(models.Model):
name = models.CharField(max_length=200)
code = models.CharField(max_length=200)
实际上,Painting 有 30 列,Painter 有 3。
如何获得QuerySet 的绘画,而不是每个对象都有painter_id 它有painter_name?
我尝试了很多变体:
paintings = Painting.objects.prefetch_related('painter_set__name').all()
但似乎无法正确处理。
我的最终目标是使用pandas 导出CSV,因此我希望QuerySet 中的每个对象都包含我感兴趣的所有字段。
我想做类似的事情
paintings = Painting.objects....
df = pandas.DataFrame(list(paintings.values()))
df.to_csv('blah.csv’)
【问题讨论】:
-
你想对结果做什么?像
Painting.objects.select_related('painter').values_list('description', 'painter__name')这样的事情可能会做你想做的事。 -
所以这里的模型只是我所拥有的模型的较小版本。
Painting模型有 20 列,Painter只有 3 列。最终我将通过pandas.DataFrame(result)将其转换为 CSV。我只想让绘画拥有我需要的所有 21 个领域。
标签: django django-models django-queryset