我有以下问题。我有一个不同的联系班 用户可以使用自己的主题进行标记:
class Contact(db.Model):
contact_date = db.DateProperty(auto_now_add=True)
remarks = db.TextProperty()
topic = db.ReferenceProperty(Topic)
class Topic(db.Model):
topic = db.StringProperty(required=True)
description = db.TextProperty()
owner = db.ReferenceProperty(User, collection_name='topic_set')
def __unicode__(self):
return '%s' % (self.topic)
在此表单中,我只想显示某个用户的主题
class ContactForm(forms.ModelForm):
def __init__(self, user_filter, *args, **kwargs):
self.base_fields['topic'].queryset = Topic.all().filter('owner
= ', user_filter)
super(ContactForm, self).__init__(*args, **kwargs)
然后我从视图中调用ContactForm,如下所示:
form = ContactForm(user_filter = request.user.key())
这一切都按预期工作。但是当我提交表格时,我得到了:
Caught an exception while rendering: Unsupported type for property :
<class 'django.http.QueryDict'>
我做错了吗?这是关于appengine django的一些问题 实施? 彼得
答案 0 :(得分:0)
联系人只能有一个主题和一个主题。正如你解释的那样:
我有一个联系人类,不同的用户可以用他们自己的主题标记
我会将ReferenceProperty
移到主题类:
class Topic(db.Model):
contact = db.ReferenceProperty(Contact)
现在一个联系人可以有多个主题。
您的例外来自于使用请求查询字典分配属性。这可能来自将user_filter
声明为参数,但将其用作关键字参数。
它应该是:
form = ContactForm(request.user.key())
但如上所述,首先你应该修改你的模型。