2012-02-22 91 views
2

我花看着Django文檔的最後幾個小時,在這裏類似的問題,但我仍然對如何解決這個問題不清楚...Django的模型篩選器

在essense我要訪問的列表的電子郵件地址相應和某一組,這樣我就可以發送電子郵件到這些客戶誰是這個團體(命名group_one,group_two等)

class Group(models.Model): 
    name = models.CharField(primary_key=True) 
    mailing_list = models.ManyToManyField("Customer", null=True) 

class Customer(models.Model): 
    name = models.CharField() 
    email = models.EmailField(primary_key=True) 

我已經試過

group_mail_list = Group.objects.filter(name=group_two) 

和部分THI小號返回group_two的查詢對象,但是當我嘗試做一個__contains過濾器我得到一個錯誤:

TypeError: Related Field has invalid lookup: contains 

任何人幫助我嗎?不知道這是因爲它可能是多對多的關係嗎?

感謝提前:)

+0

group_mail_list = Group.objects.filter(NAME =「group_two」) – iddqd 2012-02-22 19:00:08

+0

你沒有提供__contains位的代碼。僅適用於工作 – 2012-02-22 19:01:58

+0

的另一個示例,該示例返回空列表。那麼,看看Group對象中的mailing_list字段,然後查看Customer中的名稱? Customer對象中的名稱是Customers名稱,而不是它們所屬的Group名稱。我想拖動所有屬於mailing_list組二的電子郵件地址。希望澄清它? – dannymilsom 2012-02-22 19:16:38

回答

7

你真正想要的是Customer s,則。這似乎違反直覺的表面上,因爲你想要的電子郵件的Group,但是那場對CustomerGroup

Customer.objects.filter(group__name='group_two').values_list('email') 
+0

賓果!謝謝,我不會這樣想的。還有一個問題,如果我可以 - 返回的列表就像[(u'[email protected]',)]。有沒有簡單的方法來根除unicode位?我假設你是什麼? – dannymilsom 2012-02-22 19:39:00

+0

「u」不是字符串的一部分。這只是一個信號,表示字符串是unicode。數據庫中存儲的每個字符串Django都是unicode。 Unicode很好 - 你想要的。如果這是你所擔心的,它實際上不會在電子郵件的TO字段中出現「u」。 – 2012-02-22 19:46:32

+0

好的,非常感謝你,如果沒有你的幫助,我們會一直困擾着你 – dannymilsom 2012-02-22 20:05:36