Ошибки броска mongoengine ReferenceField - PullRequest
0 голосов
/ 06 ноября 2018

Я сделал простую системную плату 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

Я не знаю, почему произошла ошибка.

Есть здесь какое-нибудь решение?

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...