Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ОПИСАНИЕ НА КОДА:
- 1. def form_valid(self, form): --> чрез form казваме, че override-ването на метода form_valid е насочено към form; 2. Създава се променлива profile_photo която включва файла снимката, което е качена от потребителя в полето 'profile_photo'. 3. Прави се проверка if дали има такава снимка качена. 4. Ако проверката е True атрибутът profile_photo от инстанцията form.instance се set-ва равен на променливата profile_photo. 5. В return връщаме резултата.
- class ProfileUpdateView(views.UpdateView):
- model = Profile
- template_name = 'accounts/edit_profile.html'
- fields = ("first_name", "last_name", "age", "profile_photo",)
- def form_valid(self, form):
- profile_photo = self.request.FILES.get('profile_photo')
- if profile_photo:
- form.instance.profile_photo = profile_photo
- return super().form_valid(form)
- def get_success_url(self):
- return reverse("details profile", kwargs={"pk": self.object.pk})
- Полета за актуализиране (fields): С параметъра fields = ("first_name", "last_name", "age", "profile_photo",) се задават полетата на модела Profile, които могат да се редактират и актуализират в изгледа. Това означава, че формата за редактиране ще съдържа само тези четири полета, които потребителят може да промени.
- Обработка на профилната снимка в form_valid(): В метода form_valid(), кодът проверява дали има качена снимка чрез self.request.FILES.get('profile_photo'). Ако има такава, тогава се задава form.instance.profile_photo = profile_photo, за да се обнови снимката на профила с качената от потребителя. След това super().form_valid(form) се грижи за съхранението на промените.
- Използване на model = Profile: Задаването на model = Profile е по-добър вариант от queryset = Profile.objects.all(), когато нямаш нужда да променяш или филтрираш queryset. Това е стандартен и по-четим подход, тъй като Django автоматично ще използва всички обекти от Profile като основен queryset.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement