URL을 참조하기 위해 슬러그를 사용하고 싶습니다. 그럼에도 불구하고, 내가 사용하고자하는 모델은 중국어 어휘 퀴즈를위한 디자인이며, URL을 나타 내기 위해 3 가지 다른 민달팽이를 사용하고 싶습니다. 그런 다음Django에서 한 모델에 둘 이상의 슬러그 필드를 사용할 수 있습니까?
, 나는
그리고 models.py
from django.db import models
from django.db.models import permalink
from django.template.defaultfilters import slugify
from unidecode import unidecode
class Vocabulary(models.Model):
title = models.CharField(" Title ", max_length = 100)
vocabularyCharacter = models.CharField("Character", max_length = 100, blank = True, null = True)
vocabularyTranslation = models.CharField("Translation", max_length = 100, blank = True, null = True)
vocabularyPinyin = models.CharField("Pinyin", max_length = 100, blank = True, null = True)
vocabularyCharacterSlug = models.SlugField("Character Slug (optional)", max_length = 100, blank = True, null = True)
vocabularyTranslationSlug = models.SlugField("Translation Slug (optional)", max_length = 100, blank = True, null = True)
vocabularyPinyinSlug = models.SlugField("Pinyin Slug (optional)", max_length = 100, blank = True, null = True)
audio_file = models.FileField("Audio file (optional)", upload_to = u'resources/mp3/', max_length=200, blank = True, null=True)
description = models.TextField("Description ", blank = True, null = True)
class Meta:
verbose_name = 'vocabulary'
verbose_name_plural = 'vocabularies'
def __unicode__(self):
return u"%s" % self.title
def save(self, force_insert = False, force_update = False):
self.vocabularyCharacterSlug = slugify(unidecode(self.vocabularyCharacter))
self.vocabularyTranslationSlug = slugify(unidecode(self.vocabularyTranslation))
self.vocabularyPinyinSlug = slugify(unidecode(self.vocabularyPinyin))
super(Vocabulary, self).save(force_insert, force_update)
@permalink
def get_absolute_vocabulary_character_url(self):
return ('vocabulary_character_detail', None, {
'vocabularyCharacterSlug': self.vocabularyCharacterSlug,
})
@permalink
def get_absolute_vocabulary_traslation_url(self):
return ('vocabulary_traslation_detail', None, {
'vocabularyTranslationSlug': self.vocabularyTranslationSlug,
})
@permalink
def get_absolute_vocabulary_pinyin_url(self):
return ('vocabulary_pinyin_detail', None, {
'vocabularyPinyinSlug': self.vocabularyPinyinSlug,
})
,이 모델
view.py
from django.shortcuts import get_object_or_404, render_to_response
from core.vocabulary.models import Vocabulary
def vocabulary_character_detail(request, vocabularyCharacterSlug):
vocabulary = get_object_or_404(Vocabulary, vocabularyCharacterSlug = vocabularyCharacterSlug)
return render_to_response('vocabulary/vocabulary_character_detail.html',
{'vocabulary': vocabulary})
def vocabulary_translation_detail(request, vocabularyTranslationSlug):
vocabulary = get_object_or_404(Vocabulary, vocabularyTranslationSlug = vocabularyTranslationSlug)
return render_to_response('vocabulary/vocabulary_translation_detail.html',
{'vocabulary': vocabulary})
def vocabulary_pinyin_detail(request, vocabularyPinyinSlug):
vocabulary = get_object_or_404(Vocabulary, vocabularyPinyinSlug = vocabularyPinyinSlug)
return render_to_response('vocabulary/vocabulary_pinyin_detail.html',
{'vocabulary': vocabulary})
에 대한 전망이 모델을 가지고
추가 itionally, 내가 해당 템플릿을 생성하고 난 URL을
url(r'^(?P<vocabularyCharacterSlug>[-\w]+)/$',
vocabulary_character_detail,
name = 'vocabulary_character'),
그리고 다른 2에 액세스 할 수 있습니다
from django.conf.urls import patterns, url
from core.vocabulary.views.vocabulary import vocabulary_character_detail
from core.vocabulary.views.vocabulary import vocabulary_translation_detail, vocabulary_pinyin_detail
urlpatterns = patterns('',
url(r'^(?P<vocabularyCharacterSlug>[-\w]+)/$',
vocabulary_character_detail,
name = 'vocabulary_character'),
url(r'^(?P<vocabularyTranslationSlug>[-\w]+)/$',
vocabulary_translation_detail,
name = 'vocabulary_translation'),
url(r'^(?P<vocabularyPinyinSlug>[-\w]+)/$',
vocabulary_pinyin_detail,
name = 'vocabulary_pinyin'),
)
이 URL 파일
urls.py를 가지고, 나는 오류가 발생 말하는
아니 어휘 주어진 검색어와 일치합니다.
장고는 모델 용 슬러그 필드 하나만 지원합니까?
장고가 하나 이상의 슬러그 필드를 지원한다면, 나는 무엇을 놓치고 있습니까?
아마 쿼리입니다. Dagango는 슬러그 필드의 양을 제한하지 않습니다. –