Python django型号上的图像未保存
我创建了一个相册,其中包含一张照片作为外键,但不知何故,当我添加一张照片时,它可能不会保存在我的数据库或管理站点中 以下是我的模型:Python django型号上的图像未保存,python,django,forms,image,django-cms,Python,Django,Forms,Image,Django Cms,我创建了一个相册,其中包含一张照片作为外键,但不知何故,当我添加一张照片时,它可能不会保存在我的数据库或管理站点中 以下是我的模型: class AlbumPluginModel(CMSPlugin): name = models.CharField(max_length=255, help_text=_('e.g: Zuerich city, or Zuerich Hoengg'))
class AlbumPluginModel(CMSPlugin):
name = models.CharField(max_length=255,
help_text=_('e.g: Zuerich city, or Zuerich Hoengg'))
slug = models.SlugField(_('Slug'), blank=True, null=True, unique=True, db_index=True)
description = HTMLField(blank=True, null=True)
cover_photo = models.ImageField(verbose_name=_('Add cover photo'), null=True, blank=True)
is_active = models.BooleanField(_('active'), blank=True)
date_created = models.DateTimeField(auto_now_add=True)
date_modified = models.DateTimeField(auto_now=True)
sort = models.IntegerField(_("Sort Order"), null=True, blank=True, default=0)
def __str__(self):
if self.name:
return u"File for %s" % self.name
else:
return u"%s" % self.name
def get_absolute_url(self):
return "/album_detail%i/" % self.id
class Meta:
ordering = ['sort']
verbose_name = "Album"
verbose_name_plural = "Albums"
class Photo(models.Model):
photo = models.ForeignKey(AlbumPluginModel, verbose_name=_('choose album'), null=True, blank=True)
image1 = models.ImageField(verbose_name=_('Photo'), null=True, blank=True, upload_to="/static/img/")
sort = models.IntegerField(_("Sort Order"), null=True, blank=True, default=0)
def __unicode__(self):
return u"%s" % self.image1
def __str__(self):
return u"%s" % self.image1
class Meta:
ordering = ['sort']
verbose_name = _("photo")
verbose_name_plural = _("Photos")
forms.py
class AlbumPluginForm(forms.ModelForm):
class Meta:
model = AlbumPluginModel
fields = ['name', 'description', 'cover_photo', 'is_active',]
class PhotoPluginForm(forms.ModelForm):
photo = forms.ModelChoiceField(label='select album',aqueryset=AlbumPluginModel.objects.all(), required=False)
class Meta:
model = Photo
fields = ('photo', 'image1', )
views.py
def add_photo(request, id=None, **kwargs):
if request.method == 'POST':
all_photos = Photo.objects.all
form = PhotoPluginForm(request.POST, request.FILES, initial={'photo': id})
template_name = 'photo_create.html'
context = {
"form": form,
"all_photos": all_photos,
}
if form.is_valid():
all_photos = form.save(commit=False),
form.save()
messages.success(request, "Photo was added.")
return redirect('/photos')
else:
print("error: form nicht valid")
return render(request, template_name, context)
您应该为要在服务器中上载某些文件的字段添加
upload\u到
参数。在您的情况下,在相册插件模型中
您的封面照片
将
cover_photo = models.ImageField(verbose_name=_('Add cover photo'), null=True, blank=True, upload_to='path_where_you_want_to_save')
如果使用commit=False
调用save()
,则它将返回一个尚未保存到数据库的对象。在这种情况下,您可以对生成的模型实例调用save()
。你应该像这样改变你的观点
all_photos = form.save(commit=False),
all_photos.save()
经过长时间的尝试,我终于找到了答案: in views.py 我把这句话从
form = PhotoPluginForm(request.POST or None)
致:
在我的模板中,我忘记了这个:
enctype="multipart/form-data"
是否已将
enctype=“multipart/form data”
添加到模板中的
中?应将其保存在媒体文件夹中。不在静态文件夹中/static/img/
应该是/media/img/
@MounaDhaouadi只是没有saving@MHassan您是否在保存相册插件模型的cover\u photo
或photo
的image1
时遇到问题?@M Hassan“tuple”对象没有属性“save”
enctype="multipart/form-data"