Django& Mongoengine从嵌入式文档中获取数据?

时间:2018-01-09 04:39:23

标签: python django mongodb django-rest-framework mongoengine

我无法从mongoengine中的嵌入式文档中检索数据。

models.py

from mongoengine import Document, EmbeddedDocument, fields



class ProductFields(EmbeddedDocument):
    key_name    = fields.StringField(required=True)
    value   = fields.DynamicField(required=True)

class Product(Document):
    name        = fields.StringField(required=True)
    description = fields.StringField(required=True, null=True)
    fields      = fields.ListField(fields.EmbeddedDocumentField(ProductFields))

views.py

class ProductListView(APIView):

    def get(self, request):
        # list_products = Product.objects.all()
        result=[]
        productfields = ProductFields
        for product in Product.objects:
            data={
                "name":product.name,
                "description":product.description,
                # "key":product.fields.key_name,
                # "value":ProductFields.value,
            }
            print (data)
            # print(productfields.key_name)
            result.append(data)
        return Response({"products":result,"message":"list of products.","requestStatus":1},status=status.HTTP_200_OK)

输出:

{
        "description": "test description",
        "name": "product1"
        "fields":[ 
           { "key_name" : value},
           { "key_name" : value},
           ]
}

如何获得上述输出?打印功能不起作用,因为mongoengine返回对象而不是值。

1 个答案:

答案 0 :(得分:0)

在这里,我看到您正在使用Dajngo Rest FrameWork中的 APIView 。看看django-rest-framework-mongoengine。如果您已经熟悉DRF,则可以使用this扩展名通过MongoDB轻松创建API端点。

即使您可以将此答案标记为正确,您现在也必须找到一些解决方法,以便将来如果其他任何人遇到相同的问题,他们都可以找到解决方案。