Простой django DetailView не работает, как передать, чтобы передать 2 аргумента в DetailView - PullRequest
0 голосов
/ 03 мая 2019

Я хочу создать подробный вид для моей модели списка воспроизведения.Я следовал инструкциям docs и получаю эту ошибку:

AttributeError at /root
Generic detail view PlaylistDetail must be called with either an object pk or a slug in the URLconf.

вот мой код:

модель:

class Playlist(models.Model):
    title = models.CharField(max_length=40, null=True)
    description = models.CharField(max_length=500, null=True)
    author = models.ForeignKey(User, default=None, on_delete=models.CASCADE)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)
    miniature = models.ImageField(upload_to='images/playlist', default="defaults/default.png", validators=[validate_miniature_file_extension])
    tracks = models.ManyToManyField(Track)

    def __str__(self):
        return self.title

url:

path('<slug:author>', PlaylistDetail.as_view(), name='playlist'),

view:

class PlaylistDetail(DetailView):
    model = Playlist
    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['now'] = timezone.now()
        return context

Я полагаю, это вызвано тем, что один и тот же пользователь создал несколько списков воспроизведения, и он должен получить заголовок User &&.Есть предложения?

1 Ответ

1 голос
/ 03 мая 2019

Проблема в том, что в URL вы используете <slug:author>

path('<slug:author>', PlaylistDetail.as_view(), name='playlist'),

И по умолчанию он ищет slug.

Попробуйте обновить представление следующим образом:

class PlaylistDetail(DetailView):
    model = Playlist
    slug_url_kwarg = 'author' # <----
    def get_context_data(self, **kwargs):
        # . . . 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...