2009-10-18 69 views
0

我有以下問題。我有一個接觸類不同 用戶可以使用自己的主題標籤:在referenceproperty下拉列表中篩選問題 - Django

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如下:

形式=的ContactForm(user_filter = request.user.key())

這一切都按預期方式工作。然而,當我提交表格時,我得到:

Caught an exception while rendering: Unsupported type for property : 
<class 'django.http.QueryDict'> 

我做錯了什麼?這是否與appengine django 執行有關? 彼得

+1

你能告訴我們完整的例外情況和它發生的代碼嗎?它看起來不像是你向我們展示的代碼所做的任何事情。 – 2009-10-29 10:16:15

+0

尼克,我解決了它。我有以下內容: if request.method =='POST': form = ContactForm(request.user.key()) added data = request.POST 謝謝你幫助我在其他地方尋找 – 2009-10-31 21:23:12

回答

0

A聯繫方式可以有一個主題,只有一個主題。當你解釋說:

我有一個接觸類,不同的用戶可以使用自己的主題標籤

我將在ReferenceProperty移動到主題類:

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

現在一個聯繫可以有多個主題。

你的例外來自分配與請求查詢字典的屬性。這可能來自於宣稱user_filter作爲參數,但將其用作關鍵字參數。 它應該是:

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

但如上所述,首先你應該修改你的模型。

+0

試過這個,但仍然不工作。我的猜測是它與appengine ..... – 2009-10-29 09:36:15