Вот простой сценарий: у меня есть сообщение в блоге с комментариями к нему. Теперь я хочу использовать mongoforms, чтобы пользователь мог отправлять свои комментарии. Поэтому у меня есть эта models.py:Сохраните/обновите форму до EmbeddedDocument
class Post(Document):
title = StringField(max_length=60)
body = StringField()
created = DateTimeField(default=datetime.datetime.now)
comments = ListField(EmbeddedDocumentField('Comment'))
class Comment(EmbeddedDocument):
author = StringField(max_length=60)
body = StringField()
created = DateTimeField(default=datetime.datetime.now)
И я использую django-mongoforms для поддержки аналогичной функциональности ModelForm, в forms.py:
class CommentForm(MongoForm):
class Meta:
document = Comment
fields = ('author', 'body')
В views.py, я просто хочу сохранить, что пользователь ввел, а точнее, поля Автор и Тело комментария, вот как добавить комментарий:
def add_comment(request, id):
post = Post.objects.with_id(id)
if request.method == 'POST':
form = CommentForm(request.POST, instance=post.comments)
if form.is_valid():
form.save()
return HttpResponseRedirect(post.get_absolute_url())
Затем, когда я нажимаю кнопку Отправить здесь приходит сообщение об ошибке:
экземпляр должен быть mongoengine документ, не BaseList
Итак вопросы:
- Как тайному BaseList для документирования в MongoEngine? Я просмотрел документ без намека.
- Что лучше всего подходит для работы с EmbeddedDocument? Будет ли HelpDocument помочь?
Также есть смежные вопросы здесь, но без ответа: What is the proper way to update a listfield of embedded documents in mongoengine?
Эта работа ред! Благодарим вас за теплую помощь как на freenode, так и на этом пути. – Liki