Измените значение по умолчанию для Slug_Field на customslug в Django - PullRequest
0 голосов
/ 05 сентября 2018

Я использую Generic Views в Django 2.1.

Мои взгляды смешиваются, потому что я не знаю почему:

urls.py:

path('study-abroad/<slug:slug>/', views.SubjectDetailView.as_view(), name='subject-detail'),
path('study-abroad/<slug:slug>/', views.StudylevelDetailView.as_view(), name='studylevel-list'),

Так что я думаю, что лучше называть нестандартных слагов, чтобы предотвратить это. Как это:

urls.py:

path('study-abroad/<slug:subjectslug>/', views.SubjectDetailView.as_view(), name='subject-detail'),
path('study-abroad/<slug:studylevelslug>/', views.StudylevelDetailView.as_view(), name='studylevel-list'),

Мой вопрос:

Как я могу изменить значение по умолчанию для Slug_Field на mycustomslug? (по умолчанию в Django это slug)

Views.py

class SubjectDetailView(generic.DetailView):
    model = Programmesearch
    template_name = 'mnsdirectory/subject_detail.html'
    def slugify(value, allow_unicode=False):
        slug_field = slugify('Programmesearch.full_subject_name')


class StudylevelDetailView(generic.DetailView):
    model = StudyLevel
    template_name = 'mnsdirectory/study_level.html'
    def slugify(value, allow_unicode=False):
        slug_field = slugify('StudyLevel.study_level')

Models.py:

class Programmesearch(models.Model):
    full_subject_name = models.CharField(max_length=100, choices=SUBJECT_NAME_CHOICE)
    subjectslug = models.SlugField(unique=True)

    def __str__(self):
        return self.subjectslug

    def get_absolute_url(self):
        return reverse('SubjectDetailView', args=[str(self.id)])

class StudyLevel(models.Model):
    study_level = models.CharField(max_length=100, blank=True, null=False)
    studylevelslug = models.SlugField(unique=True)

    def __str__(self):
        return self.studylevelslug

    def get_absolute_url(self):
        return reverse('StudylevelDetailView', args=[str(self.id)])

Когда я пытаюсь добавить новый объект на странице администратора, я получаю сообщение об ошибке

"FieldError в / admin / mnsdirectory / studylevel / add / Не удается разрешить ключевое слово 'slug' в поле. Варианты: id, study_level, studylevelslug "

...