Django s3direct загрузка файлов работает через панель администратора, но не через форму модели

У меня есть модель формы, которая позволяет пользователям загружать изображения. Но когда мы нажимаем submit на этой форме, изображение не загружается в s3. Я зарегистрировал ту же модель в админке, и загрузка работает через панель администратора. Поэтому я знаю, что мой s3 настроен правильно. Я сделал так, чтобы он возвращал Httpresponse с именем error, когда форма недействительна, и он возвращает это, когда я нажимаю submit. Я очень новичок в django и не могу разобраться в этом. Буду признателен за любую помощь. Спасибо

Моя модель

class advert(models.Model):
    category_choices = (
        ("choice", "choice"),
    )
    name = models.CharField(max_length=32)
    part_name = models.CharField(max_length=50, blank=True)
    category = models.CharField(choices=category_choices, max_length=255)
    photo = S3DirectField(dest='primary_destination')
    seller = models.ForeignKey(User, on_delete=models.CASCADE)
    soldby = models.CharField(max_length=32, blank=True)
    place = models.CharField(max_length=32, blank=True)
    cell = models.CharField(max_length=13,blank=True)

Моя модель формы

class advertform(forms.ModelForm):
def __init__(self, *args, **kwargs):
    super(advertform, self).__init__(*args, **kwargs)
    self.fields['seller'].widget.attrs['hidden'] = True
soldby = forms.CharField(widget=forms.TextInput(attrs={'readonly': 'readonly', 'class':'inpt'}))
place = forms.CharField(widget=forms.TextInput(attrs={'readonly': 'readonly', 'class':'inpt'}))
cell = forms.CharField(widget=forms.TextInput(attrs={'readonly': 'readonly', 'class':'inpt'}))
# photo = forms.URLField(widget=S3DirectWidget())
name = forms.CharField(widget=forms.TextInput(attrs={'class': 'inpt', 'placeholder': 'Name of component'}))
part_name = forms.CharField(widget=forms.TextInput(attrs={'class': 'inpt', 'placeholder': 'Part no./name'}))
class Meta:
    model = advert
    fields = ('name', 'part_name', 'category', 'photo', 'soldby', 'place', 'cell', 'seller')

Моя функция представления

def addpost(request):
if not User.is_authenticated:
    return HttpResponse('Please Login')
else:
    if request.method == 'POST':
        form = advertform(request.POST, request.FILES)
        if form.is_valid():
            advert = form.save()
            advert.refresh_from_db()
            advert.save()
            return HttpResponse('Advertisement added')
        else: return HttpResponse('Error')
    else:
        form = advertform(initial={'soldby': request.user.userprofile.store, 'place': request.user.userprofile.town,'cell': request.user.userprofile.phone,'seller': request.user.id})
    return render(request, 'adpost.html', {'form': form})

Мой HTML

<form class="box2" id="form" method="POST" action="" enctype="multipart/form-data">
          {% csrf_token %}
          {{ form }}
          <button type="submit" id="btn">Publish Ad</button>
</form>
Вернуться на верх