Нужно иметь URL, как / истории / <id>/ эпизоды / 1 - PullRequest
0 голосов
/ 24 сентября 2019

Когда я создаю новый эпизод, идентификатор автоматически увеличивается.Что мне нужно?Представьте, у меня есть 10 эпизодов для разных историй, поэтому, если я создам эпизод для истории (например, с id = 5), он назначит идентификатор для нового эпизода как 11. Url будет похож на / story / 5 / episodes /11, но мне нужно что-то вроде / story / 5 / episodes / 1.Было бы хорошо хранить идентификаторы эпизодов в соответствии с историей, а не все серийные номера из всех историй.Как это сделать?

class Story(models.Model):
    title = models.CharField(max_length=255)
    description = models.TextField(max_length=255)
    cover = models.ImageField(upload_to=upload_location)
    created_at = models.DateTimeField(auto_now_add=True)
    author = models.ForeignKey(User, on_delete=models.CASCADE)


class Episode(models.Model):
    title = models.CharField(max_length=255)
    description = models.TextField(max_length=255)
    created_at = models.DateTimeField(auto_now_add=True)
    story = models.ForeignKey(Story, on_delete=models.CASCADE)

1 Ответ

1 голос
/ 24 сентября 2019

Просто добавьте поле для номера эпизода в модели Episode.

class Episode(models.Model):
    .
    .
    .
    .
    episode_number = models.IntegerField(null=True) # added field

В views.py , добавьте функцию для сохранения номера эпизода.

def get_episode_number(instance):
    episode = Episode.objects.filter(story=instance).order_by('-episode_number')
    if not episode:
        return 1
    else:
        return episode[0].episode_number + 1

вызовите функцию при сохранении данных, например, если вы используете ModelForm:

if form.is_valid():
        form_save = form.save(commit=False)
        form_save.episode_number = get_episode_number(story) # pass your story instance here
        form_save.save()

Это увеличит номер эпизода для каждой сохраняемой истории.

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