我有一个mongodb后端与mongoengine - DRF服务。我有一个非常简单的一对多关系场景:
模型:
class Photo(Document):
path = StringField()
title = StringField()
owner = ReferenceField('User')
class User(Document):
first_name = StringField()
last_name = StringField()
photos = ListField(ReferenceField(Photo, reverse_delete_rule=CASCADE))
现在,当我访问/api/users/
时,我希望用户JSON对象包含一个photos
键,该键只是Photo ObjectIds
的数组,而不是整个照片对象。这是我的序列化器:
class UserSerializer(MongoEngineModelSerializer):
photos = serializers.SlugRelatedField(many=True, read_only=True, slug_field="id")
class Meta:
model = User
exclude=()
我收到了错误 -
ObjectId("...") is not JSON serializable
当我将slug_field
替换为title
时,它可以正常工作。任何帮助都会很棒!
此外,这是解决我需要记录Photo
和User
模型上的一对多关系的关系的正确方法 - 对我来说似乎有些多余。
答案 0 :(得分:0)
确保slug_field名称是该字段在数据库列中的名称。检查数据库。钥匙本来可以附加" _id"以你给该列的名字开头。