valexeich
@valexeich

Как сделать чтобы кнопка выполняла действия, которые прописаны в обработчике?

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

Model:

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    bio = models.TextField('Описание', max_length=500, blank=True)
    avatar_image = models.ImageField('Аватар', upload_to='avatar/', blank=True)
    shapka_image = models.ImageField('Шапка', upload_to='shapka/', blank=True)
    watching = models.ManyToManyField(Anime, verbose_name='Смортю', blank=True, related_name='users_watching')
    willwatch = models.ManyToManyField(Anime, verbose_name='Буду смотреть', blank=True, related_name='users_willwatch')
    viewed = models.ManyToManyField(Anime, verbose_name='Просмотрено', blank=True, related_name='users_viewed')
    thrown = models.ManyToManyField(Anime, verbose_name='Брошено', blank=True, related_name='users_thrown')
    favorite = models.ManyToManyField(Anime, verbose_name='Любимые', blank=True, related_name='users_favoritepro')


Form:

class ProfileWatchingForm(forms.ModelForm):
    class Meta:
        model = Profile
        fields = ('watching',)


HTML:

<form action="." method="post">
      {% csrf_token %}
      <input type="submit" value="Watching anime" name="add_anime">
    </form>


Views:

def watching_anime(request):
    if request.POST:
        if 'add_anime' in request.POST:
            prof = Profile.objects.get(pk=request.user.id)
            url = request.method['url']
            anime = Anime.objects.get(url=url)
            watch_form = ProfileWatchingForm(prof.watching.add(anime))
            watch_form.save()
    else:
        watch_form = ProfileWatchingForm()
    return render(request, 'anime/anime_detail.html', {'prof': prof, 'watch_form': watch_form})
  • Вопрос задан
  • 80 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы