我有一個簡單的數據庫表:
公司
如何添加一個選項來查看Django中的所有(*)?
'CompanyID', 'int(10) unsigned', 'NO', 'PRI', NULL, 'auto_increment'
'CompanyName', 'varchar(70)', 'NO', '', NULL, ''
'Type', 'enum(\'C\',\'M\',\'S\',\'A\')', 'NO', 'MUL', NULL, ''
'Country', 'varchar(60)', 'YES', 'MUL', NULL, ''
'Website', 'varchar(60)', 'YES', '', NULL, ''
'Email', 'varchar(60)', 'YES', '', NULL, ''
'Telephone', 'double unsigned', 'YES', '', NULL, ''
'Maps_Link', 'varchar(60)', 'YES', '', NULL, ''
CompanyDetails
'CompanyDetailsID', 'int(10) unsigned', 'NO', 'PRI', NULL, 'auto_increment'
'CompanyID', 'int(10) unsigned', 'NO', 'MUL', NULL, ''
'Type', 'enum(\'C\',\'M\',\'A\',\'S\')', 'NO', '', NULL, ''
'Category', 'enum(\'MEP Consultant\',\'Lighting Designer\',\'Architect\',\'Interior Designer\',\'MEP Contractor\',\'Fitout Contractor\',\'Procurement Company\',\'Developer\',\'Outdoor-Architectural\',\'Indoor-Architectural\',\'Indoor-Decorative\',\'Outdoor-Decorative\',\'Lamps\',\'Drivers\',\'Control Systems\',\'Landscaping Consultant\',\'Landscaping Contractor\',\'Other\')', 'NO', '', NULL, ''
'Comments', 'blob', 'YES', '', NULL, ''
和3個表(聯繫,大陸,產品)
我已經創建了一個應用CompanyBrowser。我試圖做一個簡單的形式爲下拉菜單:
- 類型(從公司)
- 類別(從公司詳細信息)
- 國家(從公司)
對於其中每一個,我希望用戶可以選擇在下拉菜單中選擇全部(*)。
這裏是我的urls.py:
urlpatterns=[url(r'^$',views.Index,name='index'),
url(r'^(?P<company_type>[CMSA*])/$',views.ResultsView.as_view(), name='results'),
url(r'^(?P<company_type>[CMSA*])/(?P\<company_category>\w+)/$',views.ResultsView.as_view(), name='results'),
url(r'^(?P<company_type>[CMSA*])/(?P<company_category>\w+)/(?P<company_country>\w+)/$',views.ResultsView.as_view(), name='results'),
]<br>
基本上,我會根據URL CompanyBrowser/COMPANY_TYPE/company_category/company_country,其中用戶可以輸入*,即所有任何搜索字段來顯示。
這是ResultsView我迄今編碼:
class ResultsView(generic.ListView):
template_name='CompanyBrowser/results.html'
context_object_name="results_of_company_type_query"
def get_queryset(self):
print(len(self.kwargs))
if len(self.kwargs)==1:
if self.kwargs['company_type']!="*":
return Company.objects.filter(companytype=self.kwargs['company_type'])
else return Company.objects.all()
elif len(self.kwargs)==2:
if self.kwargs["company_type"]=="M":
if self.kwargs["company_category"]=="Indoor-Decorative":
return Company.objects.filter(companytype=self.kwargs['company_type'], companydetails__category=self.kwargs['company_category'])
什麼是優雅的方式來做到這一點,而不是做的,如果別人的每個組合?我認爲如果有一個選項可以在過濾器查詢中輸入全部內容,那麼這可能很容易完成,也許?
我相信在過濾器查詢中使用包含可能會有所幫助。 – user1926852
使用contains的代碼對我來說工作得很好。唯一的問題是按國家查詢,因爲我的國家是一個外國關鍵。有什麼建議麼? – user1926852