从手动保存到Djang中其他模型的路径中未显示图像

2024-04-26 12:43:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个带有ImageField的模型我正在使用sorl-thumbnail生成缩略图。第一个模型有一个绑定到它的表单,而第二个模型在保存时从第一个模型得到它的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()

表单.py

class ImageForm(forms.ModelForm):
  class Meta:
    model = NewImage
    fields = {'thumbnail'}

视图.py

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 user.thumbnail "200x100" crop="center" as im %}
    <img src="..{{ im.url }}" width="{{ im.width }}" height="{{ im.height }}">
{% endthumbnail %}

这两个图像都有一个指向在缓存文件夹中创建的图像sorl-thumbnail的链接

为什么会发生这种情况?如何显示我的user.thumbnail


Tags: py模型imagemodelsrequestsavewidthclass
1条回答
网友
1楼 · 发布于 2024-04-26 12:43:30

试试这个:

user.thumbnail = upload_image.thumbnail.name
user.save()

还有一件事:

而不是做upload_image.time_created = timezone.now() 您可以将模型更改为包含auto_now_add=True,这将自动将创建的时间保存为实际创建的时间。 像这样:

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

希望有帮助

相关问题 更多 >