Я сделал простую системную плату API с flask-restplus
и mongoengine
Ниже код моего model
и serializer
[модель]
class Article(Document):
no = SequenceField()
subject = StringField(required=True)
content = StringField(required=True)
userid = ReferenceField(User, required=True)
comments = ListField(EmbeddedDocumentField(Comment))
created_at = DateTimeField(default=datetime.datetime.now())
updated_at = DateTimeField(default=datetime.datetime.now())
class User(Document):
no = SequenceField()
userid = StringField(unique=True, required=True)
userpw = StringField(required=True)
created_at = DateTimeField(default=datetime.datetime.now())
class Comment(EmbeddedDocument):
content = StringField(required=True)
userid = ReferenceField(User, required=True)
created_at = DateTimeField(default=datetime.datetime.now())
[сериализатору]
from marshmallow import Schema, fields
class UsersSchema(Schema):
class Meta:
fields = ('no', 'userid', 'userpw', 'created_at')
class UserSchema(Schema):
class Meta:
fields = ('no', 'userid', 'userpw', 'created_at')
class ArticleSchema(Schema):
class Meta:
fields = ('no', 'subject', 'content', 'userid', 'comments', 'created_at', 'updated_at')
class ArticleListSchema(Schema):
class Meta:
fields = ('no', 'subject', 'content', 'userid', 'comments', 'created_at', 'updated_at')
Каждая статья должна содержать идентификатор пользователя, на который ссылается User
модель.
Итак, я определил userid = ReferenceField(User, required=True)
до Article
модель.
Вставка данных работает нормально. Но когда я получаю доступ к списку данных, он выдает ошибку.
mongoengine.errors.DoesNotExist: Trying to dereference unknown document DBRef('user', 'john')
(В настоящее время { "_id" : ObjectId("5be136061b48d90b052da22d"), "no" : 18, "subject" : "dasdsadsa", "content" : "userid", "userid" : "john", "comments" : [ ], "created_at" : ISODate("2018-11-06T15:34:33.856Z"), "updated_at" : ISODate("2018-11-06T15:34:33.856Z") }
вставлено в article
)
Функция вставки здесь.
def get_all_articles():
articles = Article.objects.all()
data, errors = ArticleListSchema(many=True).dump(articles)
return data
Я не знаю, почему произошла ошибка.
Есть здесь какое-нибудь решение?
Спасибо.