我已经使用django rest框架设置了一个REST api,使用mongoengine作为我的模型的ORM . 但是,我继续从api获取这个应该是可选字段的响应:

{"ref":["This field may not be null."]}

我特意使用 ReferenceFields 的问题,但我也试过 StringFields 等,不允许是可选的/ null .

我已经尝试将验证方法设置为空lambda(返回 True ),设置 null=Truerequired=False ,其中字段在模型中定义 .

from mongoengine import *

class B(Document):
    ...    

class A(Document):
    ref = ReferenceField('B', null=True, required=False, dbref=False, validation=lambda: True)

我甚至尝试在A的串行器中明确设置串行器,以便我可以告诉它允许空值(使用 allow_null=True ):

from api.models import A,B
from rest_framework_mongoengine.serializers import DocumentSerializer

class BSerializer(DocumentSerializer):
    class Meta:
        model = B
        depth = 2

class ASerializer(DocumentSerializer):
    ref = BSerializer(allow_null=True)
    class Meta:
        model = A
        depth = 2

如何使用可选(可空)字段来使用django rest框架和mongoengine?同样,这不仅仅是 ReferenceFields ,它与我尝试的任何领域相同 .