django外键保存,文件名不是对象

时间:2015-07-30 03:46:06

标签: python django model django-queryset

我有一个模特:

class UserProfile(models.Model):
    thumbnail = models.ForeignKey(Gallery, blank=True, null=True)

和我的画廊:

class Gallery(models.Model):
    media_file = models.FileField(upload_to='somewhere)

def __str__(self):
    return self.media_file

在我看来:

media = Gallery.objects.create(media_file=form.cleaned_data['thumbnail'])
user_profile = UserProfile.objects.get(user=someuser)
user_profile.thumbnail = media
user_profile.save()

当我查看管理员和用户个人资料模型时,我没有在缩略图中看到图片网址。我只看到Media Object。我怎样才能获得图片网址?

谢谢

1 个答案:

答案 0 :(得分:2)

这是因为self.media_file将为您提供文件对象而不是保存文件的URL。更改代码以返回文件的url。最简单的可能是 -

def __str__(self):
    return self.media_file.url

在这里阅读 -

https://docs.djangoproject.com/en/1.8/ref/models/fields/#filefield https://docs.djangoproject.com/en/1.8/ref/models/fields/#django.db.models.fields.files.FieldFile.url