Как обновить поле в модели позже в проекте с другой формой? - PullRequest
0 голосов
/ 13 июня 2019

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

модель для регистра

class UserProfile(models.Model):
    user = models.OneToOneField(User,on_delete=models.CASCADE, default=None, null=True)
    role = models.CharField(max_length=50, choices=Roles, default='client')
    feedback = models.TextField(max_length=500,blank=True)
    verified =models.BooleanField(default = False,blank=True)


    def __str__(self):
        return self.user.username

Форма для обратной связи:

class FeedbackForm(forms.ModelForm):

    class Meta():
        model = UserProfile
        fields = ('feedback',)

просмотр для обратной связи:

@login_required
def feedback(request):

    if request.method == "POST":
        form = FeedbackForm(request.POST)


    else:
        form = FeedbackForm()

    if form.is_valid():
         userprofile=form.save(request)
         userprofile.save()
    else:
        form = FeedbackForm()
    return render(request, 'NewApp/feedback.html',{'form':form})

1 Ответ

0 голосов
/ 13 июня 2019

Вам необходимо передать текущий профиль в качестве параметра instance.

    form = FeedbackForm(request.POST, instance=request.user.userprofile)
...