0

프로젝트에서 모델 번역을 사용하고 있으며 내 목표의 슬러그를 번역하는 것이 목표입니다.모델 링크가있는 장고 URL 슬러그 NoReverseMatch 오류

슬러그가 성공적으로 번역되었으며 프로젝트의 모든 언어에 대한 슬러그 필드를 자동으로 채우려면 내 모델의 저장 메소드를 덮어 썼습니다.

class FrontendCategory(models.Model): 
    name = models.CharField(_('Name'), max_length=255, db_index=True) 
    slug = AutoSlugField(_('Slug'), populate_from='name', max_length=255, db_index=True) 

    def save(self, *args, **kwargs): 
     for lang_code, lang_verbose in settings.LANGUAGES: 
      if hasattr(self, 'slug_%s' % lang_code) and hasattr(self, 'name_%s' % lang_code): 
       setattr(self, 'slug_%s' % lang_code, slugify(getattr(self, 'name_%s' % lang_code, u""))) 

    def get_absolute_url(self): 
     url = reverse(
      'catalogue:frontend-category', 
      kwargs={'frontend_category_slug': self.slug, 'pk': self.pk}) 
     return url 

확인했는데 모든 슬러그가 데이터베이스에 올바르게 변환되어 저장되었습니다. 내가 갖고있는 것 같다 무엇

Reverse for 'frontend-category' with arguments '()' and 
keyword arguments '{'pk': 5, 'frontend_category_slug':'test-slug'}' not found. 
1 pattern(s) tried: ['de/catalogue/section/(P<frontend_category_slug>[\\w-]+(/[\\w-]+)*)_(?P<pk>\\d+)/$'] 

정확히 때문에 이상한 솔기 : 나는 템플릿의 get_absolute_url 메서드를 호출하는 경우

url(r'^section/(P<frontend_category_slug>[\w-]+(/[\w-]+)*)_(?P<pk>\d+)/$', 
       self.frontend_category_view.as_view(), name='frontend-category'), 

다음과 같은 오류가 발생됩니다 :

내 URL입니다 내 URL 정의에 정의되어 있습니다. 내가 슬러그를 모델 번역으로 번역하기 전에이 모든 것이 효과가 있었다. URL 정의에 의해 수행되는 슬러그 검색의 일종이 있습니까? 다른 것이 누락 되었습니까?

+0

방법에 대해 당신이'get_absolute_url' 안에이를 넣을 경우 :'django.utils이 translation'를 가져올에서와 'lang = translation.get_language()'와'translation.override (lang) : url = reverse (...) return url' ?? –

+0

입력 해 주셔서 감사합니다.하지만 모델 변환 자체와 아무런 관련이 없다는 것을 깨달았습니다. 코드를 편집하는 동안 정규식을 엉망으로 만들었습니다. – matyas

답변

0

내 문제는 modeltranslation 및 언어와 아무런 관련이 없습니다. 실수로 내 URL 정의를 편집하여이 오류를 일으켰습니다.

url(r'^section/(P<frontend_category_slug>[\w-]+(/[\w-]+)*)_(?P<pk>\d+)/$', 
       self.frontend_category_view.as_view(), name='frontend-category'), 

url(r'^section/(?P<frontend_category_slug>[\w-]+(/[\w-]+)*)_(?P<pk>\d+)/$', 
     self.frontend_category_view.as_view(), name='frontend-category'), 

(P befor을 누락와 Questionmark)해야한다 :

?P<frontend_category_slug>