Как я могу заставить эту форму работать и сохранять обновленную информацию?

Мне удалось заставить форму отображаться в модале, что было проблемой, с которой я столкнулся ранее, теперь я пытаюсь заставить это работать. Есть ли способ обойти это? Также я хочу проверить, что метод == 'POST', прежде чем проверять, действительна ли форма, но не могу найти решение...

просмотров:

class ProfileDetailView(LoginRequiredMixin, DetailView):
    model = Profile
    template_name = 'network/profile.html'


    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        user = User.objects.get(username__iexact=self.request.user)
        profile = Profile.objects.get(user=user)
        form = ProfileModelForm(instance=profile)
        confirm = False
        rel_r = Relationship.objects.filter(sender=profile)
        rel_s = Relationship.objects.filter(receiver=profile)
        rel_receiver = []
        rel_sender = []
        for item in rel_r:
            rel_receiver.append(item.receiver.user)
        for item in rel_s:
            rel_sender.append(item.sender.user)


        if form.is_valid():
            form.save()
            confirm = True

        context["rel_receiver"] = rel_receiver
        context["rel_sender"] = rel_sender
        context["posts"] = self.get_object().get_all_authors_posts()
        context["len_posts"] = True if len(self.get_object().get_all_authors_posts()) > 0 else False
        context["form"] = form
        context["confirm"] = confirm
        context["profile"] = profile

        return context

Форма:

class ProfileModelForm(forms.ModelForm):
    class Meta:
        model = Profile
        fields = ('first_name', 'last_name', 'bio', 'avatar')

Модель:

class Profile(models.Model):
    first_name = models.CharField(max_length=64, blank=True)
    last_name = models.CharField(max_length=64, blank=True)
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    country = models.CharField(max_length=64, blank=True)
    avatar = models.ImageField(upload_to='avatars', default='avatar.png')
    background = models.ImageField(upload_to='backgrounds', default='background.png')
    following = models.ManyToManyField(User, related_name='following', blank=True)
    bio = models.TextField(default="No Bio..")
    updated = models.DateTimeField(auto_now=True)
    created = models.DateTimeField(auto_now_add=True)
    slug = models.SlugField(unique=True, blank=True)

    objects = ProfileManager()

    def __str__(self):
        return f"{self.user.username}"

    def get_absolute_url(self):
        return reverse("profile-view", kwargs={"slug": self.slug})

HTML:

Не уверен, пробовали ли вы это:

В вашем представлении вы должны написать функцию под названием post.

def post(self, request):
    if request.method == 'POST':
        form = self.form(request.POST)
        if form.is_valid():
           *whatever you need to do after you've validated the from*
Вернуться на верх