В Django изображения не передаются из формы в базу данных

столкнулся со следующей проблемой. У меня есть таблица в базе данных для питомцев, в которой есть столбец petPhoto.

models.py:

class Pet(models.Model):    
    petChoices = [
        ('Кошка', 'Кошка'),
        ('Кот', 'Кот'),
        ('Собака', 'Собака'),
        ('Пёс', 'Пёс'),
    ]
    pet = models.CharField(
        max_length=6,
        choices=petChoices,
        default='Кошка')
    petName = models.CharField(max_length=50)
    petOwner = models.ForeignKey(CustomUser, on_delete=models.CASCADE)
    petBirthday = models.DateField()
    petPhoto = models.ImageField(upload_to='pet-images', blank=True, null=True)
    petBio = models.TextField(max_length=511)

При работе с HTML формой передаются все значения, кроме изображений (изображения сохраняются в папку, но в саму таблицу не попадают)

forms.py

class PetAddForm(ModelForm):

    petChoices = [
        ('Кошка', 'Кошка'),
        ('Кот', 'Кот'),
        ('Собака', 'Собака'),
        ('Пёс', 'Пёс'),
    ]
    pet = forms.ChoiceField(choices=petChoices)
    petName = forms.CharField(max_length=50)
    petBirthday = forms.DateField()
    petBio = forms.CharField(max_length=511)
    petPhoto = forms.ImageField()
    class Meta:
        model = Pet
        fields = ['pet', 'petName', 'petBirthday', 'petBio', 'petPhoto']

html:

<div>
                <form class="auth-form" method="post" id="pet_form" enctype="multipart/form-data">
                    {% csrf_token %}
                    <h1>Анкета питомца</h1>

                    <label for="id_pet">Ваш питомец:</label>
                    <select name="pet" id="id_pet">
                        <option value="Кошка" selected>Кошка</option>
                      
                        <option value="Кот">Кот</option>
                      
                        <option value="Собака">Собака</option>
                      
                        <option value="Пёс">Пёс</option>
                    </select>
                    {% if form.errors.pet %}
                        <ul class="error-list">
                            {{form.errors.pet}}
                        </ul>
                    {% endif %}

                    <label for="id_petName">Кличка питомца:</label>
                    <input type="text" name="petName" class="vTextField" maxlength="50" required="" id="id_petName">
                    {% if form.errors.petName %}
                        <ul class="error-list">
                            {{form.errors.petName}}
                        </ul>
                    {% endif %}

                    <label for="id_petBirthday">День рождения питомца:</label>
                    <input type="date" name="petBirthday" required id="id_petBirthday">
                    {% if form.errors.petBirthday %}
                        <ul class="error-list">
                            {{form.errors.petBirthday}}
                        </ul>
                    {% endif %}

                    <label for="id_petBio">Интересная информация про питомца:</label>
                    <textarea name="petBio" cols="40" rows="10" class="vLargeTextField" maxlength="511" required="" id="id_petBio"></textarea>
                    {% if form.errors.petBio %}
                        <ul class="error-list">
                            {{form.errors.petBio}}
                        </ul>
                    {% endif %}

                    <input type="file" name="petPhoto" accept="image/*" id="id_petPhoto">

                    <input type="submit" value="Сохранить анкету" name="add-pet">
                    <a href="{% url 'home' %}">На главную</a>
                    
                </form>
            </div>

views.py:

def addPetView(request):
    # обработать хозяина питомца
    if request.method == 'POST':
        form = PetAddForm(request.POST, files=(request.FILES or None))
        if form.is_valid():
            
            fPet = PetAddForm(request.POST, request.FILES)
            pet = form.cleaned_data['pet']
            petName = request.POST.get('petName')
            petOwner = CustomUser.objects.get(username = request.user.username)
            petBirthday = request.POST.get('petBirthday')
            petPhoto = request.POST.get('petPhoto')
            petBio = request.POST.get('petBio')
            fPet = Pet.objects.create(pet = pet, petName = petName, petOwner = petOwner, petBirthday = petBirthday, petPhoto = petPhoto,
                petBio = petBio)
            fPet.save()
            
            return redirect('home')
    else:
        form = PetAddForm()

    return render(request, 'add-pet.html', {'form': form})

Так же по views.py вопрос, как автоматически для каждого объекта в таблице Pet вставлять в поле хозяина пользователя, который отправил запрос? Для базы данных использую PostgreSQL

Вернуться на верх