Django中图像字段的路径名

时间:2011-05-17 05:43:59

标签: django django-models

我有这个模型,上传了Image字段。它有一个外键引用另一个类。

from django.template.defaultfilters import slugify

def upload_to(path, attribute):

    def upload_callback(instance, filename):
        return '%s%s/%s' % (path, unicode(slugify(getattr(instance, attribute))), filename)

    return upload_callback


class Data(models.Model):
    place = models.CharField(max_length=40)
    typeOfProperty = models.CharField(max_length=30)
    typeOfPlace = models.CharField(max_length=20)
    price = models.IntegerField()
    ownerName = models.CharField(max_length=80)


class ImageData(models.Model):
    property = models.ForeignKey(Data, related_name='images')
    image = models.ImageField(upload_to = upload_to('image/', 'ownerName'),blank=True,null=True)

    def __unicode__(self):
        return self.property.ownerName

我已经提到这个This Web Page来为要存储的图像创建一个动态字段。

我怀疑是否可以使用onerName作为属性(因为ownerName在超类中):

image = models.ImageField(upload_to = upload_to('image/', 'ownerName'),blank=True,null=True)

Django如何考虑需要提供此请求?

请有人能解释一下吗?

1 个答案:

答案 0 :(得分:1)

'ownerName'无效。在ImageField中直接定义要保存的内容非常复杂。也许你应该做这样的事情:

def upload_to(path):

    def upload_callback(instance, filename):
        return '%s%s/%s' % (path, unicode(slugify(instance.property.ownerName), filename)

    return upload_callback

如果你真的想让它尽可能动态,你必须将'property.ownerName'之类的东西传递给函数,拆分字符串,从property实例中检索attrtibute ImageData然后属性来自其外键实例的ownerName

虽然我认为这会让事情变得复杂,但你最好为不同的用例定义额外的功能。