Django没有将表单保存到数据库

时间:2017-12-08 05:26:11

标签: python django django-models django-forms

如何使用图像将表单保存到数据库?如果我对imagen = modelImageField行进行评论,那么一切正常,所以我认为model.py中存在问题。表单的所有其他部分保存到数据库。如果我注释掉该行,则不会显示错误,但表单不会保存到数据库中。任何人都可以帮我这个吗?

这是我的观点

Views.py
class donacion_Form(CreateView):
template_name='App/donacion.html'
model=donacion
fields="__all__"
success_url=reverse_lazy('mi_donacion')

这是表格

Forms.py
class donacion_Form(forms.ModelForm):
class Meta:
    model=donacion
    fields="__all__"

这是模型

Model.py
class donacion(models.Model):
nombre=models.CharField(max_length=50)
estados = (
('EC', 'Excelente condicion'),
('BP', 'Buena presentacin'),
('PD', 'Presenta desgaste'),
('MD', 'Muy desgastada'),
)
prendas = (
('TP', 'Tops'),
('BT', 'Bottoms'),
('CZ', 'Calzado'),
('AS', 'Accesorios'),
('CM', 'Chamarras'),
)
generos = (
('MJR', 'Mujer'),
('HMB', 'Hombre'),
('UXA', 'Unisex adulto'),
('CHO', 'Chicos'),
('CHA', 'Chicas'),
('UXI', 'Unisex infantil'),
('BEB', 'bebes'),
)
tallas = (
('EC', 'XS'),
('CH', 'S'),
('MD', 'M'),
('GD', 'L'),
('EG', 'XL'),
('SG', 'XXL'),
)
autor=models.CharField(max_length=25)
estado = models.CharField(
    max_length=2,
    choices=estados,
    default='EC',
)
genero = models.CharField(
    max_length=3,
    choices=generos,
    default='UXA',
)
prenda = models.CharField(
    max_length=2,
    choices=prendas,
    default='TP',
)
talla = models.CharField(
    max_length=2,
    choices=tallas,
    default='CH',
)
direccion = models.CharField(max_length=500)
/*if i comment this line imagen work fine*/
imagen = models.ImageField(null = False,blank=False)
descrip = models.TextField()

def __str__(self):
    return '{}'.format(self.autor)

1 个答案:

答案 0 :(得分:-1)

imagen = models.ImageField(null = False,blank=False, upload_to='imagen/')

使用upload_to指定上传目录,更多信息here

class DonacionCreateView(CreateView):
    template_name='App/donacion.html'
    form_class = DonacionForm
    success_url=reverse_lazy('mi_donacion')

class DonacionForm(forms.ModelForm):
    class Meta:
        model=donacion
        fields="__all__"


<form class="form-horizontal" enctype="multipart/form-data"
      action="{% url 'donacion_create' %}"
      method="post">
    {% csrf_token %}
    {{ form.media }}
    {{ form.errors}}
    {{form}}

    <div class="form-group">
        <input class="btn" type="submit" value="Create"/>
    </div>
</form>

将form.errors添加到html,看看是否发生任何错误。 如果还是错的,请更新现象和错误信息。