Наложение двух полей ImageField в форме Django
Я пытаюсь редактировать профиль пользователя в django, но при редактировании изображение баннера и пиктограммы профиля накладываются друг на друга. То есть, я помещаю разное изображение на каждую из них, но когда я сохраняю форму, я получаю одно и то же изображение.
При создании профиля оба профиля устанавливаются по умолчанию, как это предусмотрено в models.py.
views.py
@login_required
def EditProfile(request):
user = request.user.id
profile = Profile.objects.get(user__id=user)
user_basic_info = User.objects.get(id=user)
if request.method == 'POST':
form = EditProfileForm(request.POST, request.FILES, instance=profile)
if form.is_valid():
user_basic_info.first_name = form.cleaned_data.get('first_name')
user_basic_info.last_name = form.cleaned_data.get('last_name')
profile.picture = form.cleaned_data.get('picture')
profile.banner = form.cleaned_data.get('banner')
profile.location = form.cleaned_data.get('location')
profile.url = form.cleaned_data.get('url')
profile.birthday = form.cleaned_data.get('birthday')
profile.bio = form.cleaned_data.get('bio')
profile.save()
user_basic_info.save()
return redirect('users:profile', username=request.user.username)
else:
form = EditProfileForm(instance=profile)
context = {
'form':form,
}
return render(request, 'users/edit.html', context)
forms.py
class EditProfileForm(forms.ModelForm):
first_name=forms.CharField(
widget=forms.TextInput(attrs={
'class': 'shadow-sm focus:ring-indigo-500 dark:bg-dark-third dark:text-dark-txt focus:border-indigo-500 block w-full sm:text-sm border-gray-300 rounded-md',
})
)
last_name=forms.CharField(
widget=forms.TextInput(attrs={
'class': 'shadow-sm focus:ring-indigo-500 dark:bg-dark-third dark:text-dark-txt focus:border-indigo-500 block w-full sm:text-sm border-gray-300 rounded-md',
})
)
picture = forms.ImageField(label='Profile Picture', required=False, widget=forms.FileInput)
banner = forms.ImageField(label='Banner Picture', required=False, widget=forms.FileInput)
location = forms.CharField(widget=forms.TextInput(attrs={'class': 'max-w-lg block w-full shadow-sm dark:bg-dark-third dark:text-dark-txt dark:border-dark-third focus:ring-indigo-500 focus:border-indigo-500 sm:max-w-xs sm:text-sm border-gray-300 rounded-md'}), max_length=25, required=False)
url = forms.URLField(label='Website URL', widget=forms.TextInput(attrs={'class': 'max-w-lg block w-full shadow-sm dark:bg-dark-third dark:text-dark-txt dark:border-dark-third focus:ring-indigo-500 focus:border-indigo-500 sm:max-w-xs sm:text-sm border-gray-300 rounded-md'}), max_length=60, required=False)
bio = forms.CharField(widget=forms.TextInput(attrs={'class': 'max-w-lg block w-full shadow-sm dark:bg-dark-third dark:text-dark-txt dark:border-dark-third focus:ring-indigo-500 focus:border-indigo-500 sm:max-w-xs sm:text-sm border-gray-300 rounded-md'}), max_length=260, required=False)
birthday = forms.DateField(widget= forms.TextInput(attrs={'class': 'max-w-lg block w-full shadow-sm dark:bg-dark-third dark:text-dark-txt dark:border-dark-third focus:ring-indigo-500 focus:border-indigo-500 sm:max-w-xs sm:text-sm border-gray-300 rounded-md'}), required=False)
class Meta:
model = Profile
fields = ('first_name','last_name','picture','banner','location','url','bio','birthday')
models.py
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='profile')
picture = models.ImageField(default='users/user_default_profile.png', upload_to=user_directory_path_profile)
banner = models.ImageField(default='users/user_default_bg.jpg', upload_to=user_directory_path_banner)
verified = models.CharField(max_length=10, choices=VERIFICATION_OPTIONS, default='unverified')
followers=models.ManyToManyField(User, blank=True, related_name="followers")
date_created = models.DateField(auto_now_add=True)
location=models.CharField(max_length=50, null=True, blank=True)
url=models.CharField(max_length=80, null=True, blank=True)
birthday=models.DateField(null=True, blank=True)
bio = models.TextField(max_length=150, null=True, blank=True)
def __str__(self):
return self.user.username
edit.html