2014-02-21 114 views
0

我有一個Django模型Django在多個字段上查詢對象Q?

class UserProfile(models.Model): 
    user = models.ForeignKey(User, unique=True) 
    first_name = models.CharField(max_length=255) 
    last_name = models.CharField(max_length=255) 

現在我想搜索用戶。問題是當我做

Q(first_name__icontains=search_string) | Q(last_name__icontains=search_string) 

它只在first_name和last_name分別搜索。但是如果有人在搜索欄中鍵入全名,則不會給出任何結果,因爲全名(first_name + last_name)不包含在first_name或last_name中。 我不想改變我的模型,但在搜索結合字段(first_name + last_name)動態查詢,有沒有辦法做到這一點?

+0

您可以「分割」搜索字符串並在各個字段中搜索2個字符串。 – Rohan

回答

0

如果你有多個單詞按空格拆分並使用istartswith。檢查它是否是單個單詞或多個單詞,如果單獨使用您當前的搜索,則使用下面的方式進行拆分和使用。

Q(first_name__istartswith =「Firstname」)| Q(last_name__istartswith =「Firstname」)| Q(first_name__istartswith =「Lastname」)| Q(last_name__istartswith =「Lastname」) )