我正在使用django1.7和mongoengine并使用RefrenceField将用户存储在我的Document中,但是不存储名称mongodb存储objectid。无论如何都存储名称而不是objectid。
我的模特:
class Question(Document):
user = ReferenceField(User, reverse_delete_rule=CASCADE)
title = StringField(max_length=70, required=True)
body = StringField()
tags = StringField()
date_modified = DateTimeField(default=datetime.datetime.now)
rating = IntField(default=0)
def __unicode__(self):
return self.title
def save(self, *args, **kwargs):
self.title = self.title
return super(Question, self).save(*args, **kwargs)
def get_absolute_url(self):
return reverse('view_question', args=[self.title])
Json文档样本:
{
"_id" : ObjectId("55057c867818f41c7db83888"),
"user" : ObjectId("54db3e5d7818f4253e5da0db"),
"title" : "Question1",
"body" : "<p>This is body for question 1</p>\r\n",
"tags" : "tag1",
"date_modified" : ISODate("2015-03-15T12:35:18.331Z"),
"rating" : 0
}
我的观看代码:
class new_category(CreateView):
model = Category
form_class = NewCategoryForm
success_url = reverse_lazy('registered')
def get_template_names(self):
return["new_category.html"]
def form_valid(self, form):
self.object = form.save(commit=False)
self.object.save()
return super(new_category, self).form_valid(form)
和我的网址:
url(r'^new_question/', new_question.as_view(),name='new_question'),
我正在使用默认的django用户模型,但如果需要在用户模型中进行更改仍然可以。
任何帮助将不胜感激。谢谢。
答案 0 :(得分:0)
行为是正确的,我认为你想要做的是自动取消引用用户对象。
要做到这一点,只需更改模型以反映类似的内容。
user = ReferenceField(User, reverse_delete_rule=CASCADE, dbref=True)
通过执行此操作,它将返回用户而不是DBRef。