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"