Dav*_*nes 6 python django django-filer
我第一次使用django-filer,它看起来很棒,而且工作得很好.
但是我的所有图像都被上传到"未排序的上传"文件夹,我无法找到将它们放入特定文件的方法.这让我觉得它是一个基本功能,并且考虑到它允许你创建文件夹,这一定是可能的,对吧?但我在文档中找不到它,快速查看源代码并没有帮助我.
我有一个基本的设置,如:
class Story(models.Model):
image = FilerImageField()
class Gift(models.Model):
# some stuff
class GiftImage(models.Model):
gift = models.ForeignKey(Gift)
image = FilerImageField()
Run Code Online (Sandbox Code Playgroud)
我希望GiftImage.image和Story.image进入单独的文件夹,以便为管理员用户更轻松地进行排序/搜索.
我试过了
image = FilerImageField(upload_to='somewhere') # How a django ImageField would do it
image = FilerImageField(folder='somewhere') # a guess
image = FilerImageField(name='somewhere') # a guess
image = FilerImageField(folder_name='somewhere') # another guess
Run Code Online (Sandbox Code Playgroud)
所有这些都给我一个"TypeError:init()得到一个意外的关键字参数......"或者只是不做我希望的事情.
干杯!
小智 2
如果其他人遇到这个问题,这是我找到的解决方法。如果您为该字段指定默认值,则上传将默认上传到默认图像所在的任何文件夹。在我的特定情况下,我无论如何都想要一个默认图像,所以这会一石二鸟。
您可以按照以下方法执行此操作:
首先,请注意,这FilerImageField实际上是 的外键filer.Image。因此,要添加默认值,您需要首先将一个添加filer.Image到数据库中以用作默认值,将其放入您想要上传到的文件夹中。如何做到这一点取决于您——通过您的管理员,或者以某种方式进行数据迁移。然后,您可以使用以下方法将该图像设置为默认图像:
def get_default_image():
from filer.models.imagemodels import Image
try:
return Image.objects.filter(name='My Default Image').order_by('-uploaded_at')[0]
except IndexError:
return None
class MyModel(models.Model):
image = FilerImageField(null=True, blank=True, default=get_default_image)
Run Code Online (Sandbox Code Playgroud)
此实现有一些明显的警告。如果您的默认图像名称发生更改,您将恢复为没有默认图像(因此上传到“未排序上传”)。如果有多个同名的,你的方法必须选择一个。我选择最近上传的一个。
如果您确信自己永远不想更改默认图像实例,则可以通过 选择它id。
所以这有点笨拙,但如果你正在努力让某些东西发挥作用,也许你可以接受。希望这对某人有帮助。
| 归档时间: |
|
| 查看次数: |
617 次 |
| 最近记录: |