Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在Django中手动保存到另一个模型的路径中未显示图像_Python_Django_Image_Sorl Thumbnail - Fatal编程技术网

Python 在Django中手动保存到另一个模型的路径中未显示图像

Python 在Django中手动保存到另一个模型的路径中未显示图像,python,django,image,sorl-thumbnail,Python,Django,Image,Sorl Thumbnail,我有两个带有ImageField的型号。我正在使用sorl缩略图生成缩略图。第一个模型绑定了一个表单,而第二个模型在保存时从第一个模型获取其ImageField 型号.py: #the first model class NewImage(models.Model): thumbnail = models.ImageField(upload_to='photos') time_created = models.DateTimeField() #second class Users

我有两个带有
ImageField
的型号。我正在使用
sorl缩略图
生成缩略图。第一个模型绑定了一个表单,而第二个模型在保存时从第一个模型获取其
ImageField

型号.py

#the first model
class NewImage(models.Model):
    thumbnail = models.ImageField(upload_to='photos')
    time_created = models.DateTimeField()
#second
class Users(models.Model):
    name = models.CharField(max_length=100)
    address = models.CharField(max_length=200)
    thumbnail = models.ImageField(upload_to='photos')
    time_created = models.DateTimeField()
class ImageForm(forms.ModelForm):
  class Meta:
    model = NewImage
    fields = {'thumbnail'}
def saveImage(request):
    if request.method == 'POST':
      user = Users.objects.get(id = 1)
      imageForm = ImageForm(request.POST, request.FILES or None)
        if imageForm.is_valid():
            upload_image = imageForm.save(commit=False)
            upload_image.time_created = timezone.now()
            upload_image.save()
            #save image path to user who uploaded it.
            user.thumbnail = upload_image.thumbnail
            user.save()
forms.py

#the first model
class NewImage(models.Model):
    thumbnail = models.ImageField(upload_to='photos')
    time_created = models.DateTimeField()
#second
class Users(models.Model):
    name = models.CharField(max_length=100)
    address = models.CharField(max_length=200)
    thumbnail = models.ImageField(upload_to='photos')
    time_created = models.DateTimeField()
class ImageForm(forms.ModelForm):
  class Meta:
    model = NewImage
    fields = {'thumbnail'}
def saveImage(request):
    if request.method == 'POST':
      user = Users.objects.get(id = 1)
      imageForm = ImageForm(request.POST, request.FILES or None)
        if imageForm.is_valid():
            upload_image = imageForm.save(commit=False)
            upload_image.time_created = timezone.now()
            upload_image.save()
            #save image path to user who uploaded it.
            user.thumbnail = upload_image.thumbnail
            user.save()
视图.py

#the first model
class NewImage(models.Model):
    thumbnail = models.ImageField(upload_to='photos')
    time_created = models.DateTimeField()
#second
class Users(models.Model):
    name = models.CharField(max_length=100)
    address = models.CharField(max_length=200)
    thumbnail = models.ImageField(upload_to='photos')
    time_created = models.DateTimeField()
class ImageForm(forms.ModelForm):
  class Meta:
    model = NewImage
    fields = {'thumbnail'}
def saveImage(request):
    if request.method == 'POST':
      user = Users.objects.get(id = 1)
      imageForm = ImageForm(request.POST, request.FILES or None)
        if imageForm.is_valid():
            upload_image = imageForm.save(commit=False)
            upload_image.time_created = timezone.now()
            upload_image.save()
            #save image path to user who uploaded it.
            user.thumbnail = upload_image.thumbnail
            user.save()
如果我将这些传递给我的模板:
image=NewImage.objects.get(id=1)
user=Users.objects.get(id=1)

这将显示我的图像:

{% thumbnail image.thumbnail "200x100" crop="center" as im %}
    <img src="..{{ im.url }}" width="{{ im.width }}" height="{{ im.height }}">
{% endthumbnail %}
{%thumbnail image.thumbnail“200x100”crop=“center”as im%}
{%endthumbnail%}
但这只显示一个方形框:

{% thumbnail user.thumbnail "200x100" crop="center" as im %}
    <img src="..{{ im.url }}" width="{{ im.width }}" height="{{ im.height }}">
{% endthumbnail %}
{%thumbnail user.thumbnail“200x100”crop=“center”as im%}
{%endthumbnail%}
这两个图像都有一个指向在缓存文件夹中创建的图像
sorl缩略图的链接

为什么会发生这种情况?我如何才能显示我的
用户.缩略图?

试试以下方法:

user.thumbnail = upload_image.thumbnail.name
user.save()
还有一件事:

而不是执行
upload\u image.time\u created=timezone.now()
您可以将模型更改为包含
auto\u now\u add=True
,这将自动将创建的时间保存为实际创建的时间。 像这样:

class NewImage(models.Model):
    thumbnail = models.ImageField(upload_to='photos')
    time_created = models.DateTimeField(auto_now_add=True)

希望有帮助。

为什么不使用foreignkey字段呢?无论如何,要调试这个问题,我建议您转到数据库表(即用户表),检查数据(即路径,通常是相对的)是否保存在数据库中?@Ajeeb.K.p:我已经这样做了,它保存在那里。我指的是上传图像的路径。它们是否相同,即用户和新图像中的缩略图?是的,正如我在问题中解释的那样。他们是一样的,你确定吗。或者是
user.thumbnail=upload\u image.thumbnail.url user.save()
我想应该保存url。看看这个问题,url是用来显示文件的。对吗?但是,更好的解决办法是在这里使用ForeignKeyField。url仅包括图像路径前面的媒体\u url,即使您保存user.thumboil以上载\u image.thumboil并稍后执行。url,它也会工作