django использовать слизень, а не ПК - PullRequest
0 голосов
/ 04 марта 2020

Я пытаюсь использовать slug в своем URL, я сделал это нормально на других сайтах, но по какой-то причине я не могу использовать slug в URL в этой области сайта, только первичный ключ получает желаемый результат, что мне здесь не хватает? Единственное отличие от других сайтов, которые я сделал, состоит в том, что слизень будет использоваться для фильтрации, что, как мне кажется, испортит это.

Модель:

class Desk(models.Model):
    name = models.CharField(max_length=16, unique=True)
    slug = models.SlugField(max_length=16, unique=True)

    def __str__(self):
        return self.slug


class Handover(models.Model):
    desk = models.ForeignKey(
        Desk,
        related_name="handover",
        on_delete=models.CASCADE
    )
    published = models.DateTimeField(auto_now_add=True)
    user = models.CharField(max_length=45)
    ongoing = models.CharField(max_length=1024, null=True, blank=True)
    resolved = models.CharField(max_length=1024, null=True, blank=True)
    planned_work = models.CharField(max_length=1024, null=True, blank=True)
    heightened_awareness = models.CharField(max_length=1024, null=True, blank=True)

В представлении ниже по какой-то причине я не могу использовать слово «slug» в фильтре, он просто выдает ошибку. Текущая настройка работает, если я использую PK в URL в браузере, но не слаг, который я хочу использовать (я не уверен, почему это тоже работает, я ожидаю, что это не будет работать из-за использования ' слизень в URL).

Вот представление:

class IndexView(ListView):
    template_name = 'pcc_homepage/index.html'
    queryset = Handover.objects.order_by('-published')

    def get_queryset(self):
        return Handover.objects.filter(desk=self.kwargs['desk'])

Вот URL:

urlpatterns = [
    path('home/<slug:slug>/', IndexView.as_view(), name='index'),
    path('handover/', HandoverCreateView.as_view(), name='handover'),
]

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

1 Ответ

1 голос
/ 04 марта 2020

Вы можете попробовать Handover.objects.filter (desk__slug = self.kwargs ['desk'])

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...