如何获取Django相关模型行并作为字典列表返回?

时间:2018-12-29 03:03:13

标签: python django

使用Django v1.11的AM

我有以下型号:

class LineItem():
    quote = models.ForeignKey(Quote, related_name="quote_line_items")
    sku = models.ForeignKey(SKU)

class Quote():

     def fetch_as_list_of_dict(self):
         return LineItem.objects.filter(quote=self).select_related('sku__product').values()

class SKU():
     product = models.ForeignKey(Product)

我的fetch_as_list_of_dict无法包含sku.product_id或sku.product对象。我只需要将sku.product_id作为字典的一部分即可,字典本身就是列表中的许多字典之一。

我该如何实现?

2 个答案:

答案 0 :(得分:1)

您可以通过以下方式简单地做到这一点:

def fetch_as_list_of_dict(self):
     return self.listitem_set.select_related('sku__product').values('sku__product')  # or any fields like sku__product__name, sku__product__id anything

请查看related object文档,以获取有关获取相关对象的更多详细信息。

答案 1 :(得分:0)

代码似乎正确,您可以做一件事- 如下将self更改为self.pk

def fetch_as_list_of_dict(self):
     return LineItem.objects.filter(quote=self.pk).select_related('sku__product').values()

第二种方式- 尝试仅首先获取SKU对象。

def fetch_as_list_of_dict(self):
     return LineItem.objects.filter(quote=self).select_related('sku__product')