Форум сайта python.su
Всем привет.
Есть модели загрузки содержимого:
class A_content(model.Model)
title = .........
@permalink
def get_absolute_url(self):
return ('django.views.generic.list_detail.object_detail', None, {'object_id': self.id})
class B_content(model.Model)
title = .........
@permalink
def get_absolute_url(self):
return ('django.views.generic.list_detail.object_detail', None, {'object_id': self.id})
class C_content(model.Model)
title = .......
@permalink
def get_absolute_url(self):
return ('django.views.generic.list_detail.object_detail', None, {'object_id': self.id})
def search(request, model):
error = False
query = request.GET.get('q', '')
if query:
qset = (
Q(title__icontains=query)
)
results = model.objects.filter(qset).select_related().distinct()
#query = model.objects.all().select_related()
#results = model.objects.all().select_related()
else:
#results = []
return render_to_response('search.html', {'error' : True})
return render_to_response("search.html", {
"results": results,
"query": query
})
from django.views.generic.list_detail import object_list, object_detail
from MyApp.models import A_content, B_content, C_content
create_info_a = {'model': A_content}
display_info_a = {'queryset': A_content.objects.all()}
create_info_b = {'model': B_content}
display_info_b = {'queryset': B_content.objects.all()}
create_info_c = {'model': C_content}
display_info_c = {'queryset': C_content.objects.all()}
urlpatterns = patterns('',
url(r'^search/a_search/$', 'MyProj.MyApp.views.search',
{'model': A_content}),
url(r'^search/a_search/$', 'MyProj.MyApp.views.search',
{'model': B_content}),
url(r'^search/a_search/$', 'MyProj.MyApp.views.search',
{'model': С_content}),
url(r'^search/a_search/(?P<object_id>\d+)/$', object_detail,
display_info_a),
url(r'^search/b_search/(?P<object_id>\d+)/$', object_detail,
display_info_b),
url(r'^search/c_search/(?P<object_id>\d+)/$', object_detail,
display_info_c),
url(r'^search/c_search/(?P<object_id>\d+)/$', object_detail, display_info_c),
Отредактировано (Дек. 14, 2010 15:21:36)
Офлайн
Как вы хотите чтобы работал реверсинг, если у вас все урлы одинаковые – одна и тажа вьюха к ним привязана. Понятно дело, что он находит первый попавшыйся (идет с конца) урл и в не него подставляет параметры.
Дайте своим урлам разные имена явным образом.
Офлайн
Александр Кошелев
Извините, опечатка. В урлах:
urlpatterns = patterns('',
url(r'^search/a_search/$', 'MyProj.MyApp.views.search',
{'model': A_content}),
url(r'^search/b_search/$', 'MyProj.MyApp.views.search',
{'model': B_content}),
url(r'^search/c_search/$', 'MyProj.MyApp.views.search',
{'model': С_content}),
url(r'^search/a_search/(?P<object_id>\d+)/$', object_detail,
display_info_a),
url(r'^search/b_search/(?P<object_id>\d+)/$', object_detail,
display_info_b),
url(r'^search/c_search/(?P<object_id>\d+)/$', object_detail,
display_info_c),
Офлайн
IgoPogНичего не изменилось.
Извините, опечатка. В урлах:
IgoPogТак в этом и проблема. Как ему их отличать?
а вьюха универсальная ж.
Офлайн
Александр Кошелев
Я прошу прощения. Видимо затупляю. А почему имена урлов не уникальные? Разве “search/A/id=5” и “search/C/id=5” это одно и тоже?
Если не сложно, напишите пример, как Вы советуете сделать, а то я как то не пойму.
Офлайн
Может кто-нибудь таки подскажет по-предметнее?
Офлайн
Офлайн
Александр Кошелев
Спасибо. Понял, что Вы имели ввиду. Попробую.
Сорри, за затупление…
Офлайн
Сделал так:
url(r'^search/b_search/(?P<object_id>\d+)/$', object_detail,
display_info_b, name="b-search"),
url(r'^search/c_search/(?P<object_id>\d+)/$', object_detail,
display_info_c, name="c-search"),
class B_content(model.Model)
title = .........
@permalink
def get_absolute_url(self):
return ('b-search', [str(self.id)])
Офлайн