IMHO Постоянная ссылка не должна содержать параметр запроса.Это звучит не совсем правильно.
Тем не менее, существует очень грубый и не похожий на Django способ вернуть URL, подобный тому, который вы указали в методе get_absolute_url()
модели.
Шаги
Сначала добавьте фиктивный URL-адрес и соответствующий вид бездействия.Например,
# models.py
class MyModel(models.Model):
...
@models.permalink
def get_absolute_url(self):
return ('dummy_url', [str(self.id), self.filter])
# urls.py
url(r'^news/(?P<model_id>\d+)/\?category=(?P<category>\w+)$',
'dummy_url', {}, name = 'dummy_url'),
# views.py
def dummy_url(request, *args, **kwargs):
pass
Этот манекен будет использоваться только для генерации URL.Т.е. вы получите правильный URL, если вы выполните instance.get_absolute_url()
.
. Вам нужно будет добавить другую , правильную конфигурацию URL и соответствующий вид для фактического отображениястраница экземпляра, когда вызывается URL.Примерно так.
# urls.py
url(r'^news/(?P<model_id>\d+)/$',
'correct_view', {}, name = 'correct_view'),
# views.py
def correct_view(request, *args, **kwargs):
# do the required stuff.
correct_view
придется извлечь параметр GET
из request
.
Обратите внимание, насколько похожи фиктивные и правильные конфигурации URL.Только дополнительный параметр в манекене является дополнительным.