【问题标题】:problem with filtering in a referenceproperty dropdown - Django参考属性下拉列表中的过滤问题 - Django
【发布时间】:2009-10-18 08:58:21
【问题描述】:

我有以下问题。我有一个不同的联系课程 用户可以标记自己的主题:

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的一些问题吗 执行? 彼得

【问题讨论】:

  • 你能告诉我们完整的异常,以及它发生的代码吗?它看起来与您向我们展示的代码无关。
  • 尼克,我已经解决了。我有以下内容: if request.method == 'POST': form = ContactForm(request.user.key()) added data = request.POST 谢谢你帮我在其他地方寻找

标签: django google-app-engine


【解决方案1】:

一个联系人只能有一个主题和一个主题。正如你所解释的:

我有一个联系人类,不同的用户可以用他们自己的主题进行标记

我会将ReferenceProperty 移至主题类:

class Topic(db.Model): 
    contact = db.ReferenceProperty(Contact) 

现在一个联系人可以有多个主题。

您的例外来自使用请求查询字典分配属性。这可能来自将user_filter 声明为参数,但将其用作关键字参数。 应该是:

form = ContactForm(request.user.key())

但如上所述,首先你应该修改你的模型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-09
    • 1970-01-01
    • 2015-08-19
    • 2014-03-03
    • 1970-01-01
    • 2020-11-11
    • 1970-01-01
    相关资源
    最近更新 更多