Django generic.UpdateView НЕ обновляет значения после успешного POST
Ниже я пытаюсь обновить определенную форму (OrganizationForm):
- Шаблон отображается с полями формы и существующими значениями в полях.
- После отправки формы POST запрос успешен.
ВЫПУСК: Изменения не сохраняются в БД.
# Views.py
class OrganizationDetails(LoginRequiredMixin, UpdateView):
login_url = '/user/login/'
redirect_field_name = 'redirect_to'
model = Organization
form_class = OrganizationForm
template_name = 'organization/org_details.html'
success_url = reverse_lazy("organization")
def get_object(self):
queryset = super().get_queryset()
return queryset.get(pk=self.request.user.organization.pk)
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
curr_org = self.request.user.organization
heading = TermsHeading.objects.filter(organization=curr_org)
content = TermsContent.objects.filter(heading__organization=curr_org)
context['headings'] = heading
data = dict()
for item in heading:
x = []
for desc in content:
if desc.heading == item:
x.append(desc)
data[item] = x
context['data'] = data
return context
Что я пробовал:
Я переопределил метод 'POST' в классе следующим образом:
# def post(self, request):
# print(request.POST)
# form = OrganizationForm(request.POST)
# if form.is_valid():
# form.save()
# print("Valid and Saved")
# else:
# print(form.errors)
# return super(OrganizationDetails, self).post(request)
Терминальный выход:
[16/Jul/2022 02:44:15] "GET /user/myorganization/ HTTP/1.1" 200 29699
Not Found: /favicon.ico
[16/Jul/2022 02:44:15] "GET /favicon.ico HTTP/1.1" 404 5037
[16/Jul/2022 02:44:25] "POST /user/myorganization/ HTTP/1.1" 302 0
[16/Jul/2022 02:44:25] "GET /user/myorganization/ HTTP/1.1" 200 29699
Not Found: /user/myorganization/Roboto-Regular.ttf
[16/Jul/2022 02:44:25] "GET /user/myorganization/Roboto-Regular.ttf HTTP/1.1" 404 6841
[16/Jul/2022 02:44:25] "GET /user/myorganization/ HTTP/1.1" 200 29699
Пожалуйста, помогите мне с вышеуказанным, спасибо.
Проверьте form_valid()
в официальной документации .
Кроме того, в get_object()
, похоже, есть ошибки. Возможно, вы сможете использовать его следующим образом.
def get_object(self):
return self.request.user.organization
Я думаю, что в вашем коде есть несколько вещей, которые идут не так, и проверьте следующее :
Если вы обновляете существующие данные в БД, то вам следует переопределить метод 'PUT' вместо 'POST'. Примерно так
def put (self, request):
Проверьте поле формы в классе
OrganizationForm
, которое позволяет сохранить запрос в БД.Проверьте
form_valid()
.