Django Форма модели CreateView не загружает файл - PullRequest
0 голосов
/ 07 мая 2020

проблема, с которой я столкнулся, заключается в том, что моя модельная форма не загружает файл, у меня он работал, и после добавления дополнительного кода теперь не работает, вот что происходит: он загружает / сохраняет все другие поля, кроме файла, странно то, что если я делаю это с сайта администратора, он работает. Добавлю, что не записывает путь в столбце базы данных.

models.py

class Polizas(models.Model):

    nombre = models.CharField(max_length=30, blank=True, null=True)
    numero = models.CharField(max_length=30, unique=True)
    aseguradora = models.CharField(max_length=20, blank=True, null=True)
    carro = models.ForeignKey(
        Carros, on_delete=models.CASCADE, blank=True, null=True)
    inicio_poliza = models.DateField(
        auto_now=False, auto_now_add=False, blank=True, null=True)
    fin_poliza = models.DateField(
        auto_now=False, auto_now_add=False, blank=True, null=True)
    documento = models.FileField(upload_to='polizas/', blank=True, null=True)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    class Meta:
        verbose_name_plural = "Polizas"
        ordering = ['nombre']

    def __str__(self):
        return self.nombre

    def get_absolute_url(self):
        return reverse('polizas')

forms.py

class PostPolizas(forms.ModelForm):
    class Meta:
        model = Polizas
        fields = ('nombre', 'numero', 'aseguradora', 'carro', 'inicio_poliza',
                  'fin_poliza', 'documento')
        widgets = {'inicio_poliza': forms.DateInput(attrs={'type': 'date'}),
                   'fin_poliza': forms.DateInput(attrs={'type': 'date'})
                   }

views.py

class PolizaCreate(LoginRequiredMixin, CreateView):
    login_url = '/login/'
    redirect_field_name = 'redirect_to'

    form_class = PostPolizas
    template_name = "add_insurance.html"

Terminal

[06/May/2020 22:32:17] "POST /insurance/add/ HTTP/1.1" 200 4557
[06/May/2020 22:32:25] "POST /insurance/add/ HTTP/1.1" 302 0

Я попытался проверить форму, и она не работает, это ошибка возникает в других моих модельных формах, которые загружают файлы, он загружает текстовые поля и даты, но не файлы.

Ответы [ 2 ]

1 голос
/ 07 мая 2020

Попробуйте добавить enctype = "multipart / form-data" следующим образом:

<form enctype="multipart/form-data" method="post">
    {% csrf_token%}
    <table> {{form}} </table>
    <input type="submit" value="Post">
</form>

в форму шаблона.

0 голосов
/ 07 мая 2020

По умолчанию формы передают только request.POST, так как вы загружаете файл, вы должны передать request.FILES в конструктор формы

Follow: https://docs.djangoproject.com/en/2.2/topics/http/file-uploads/

...