Django 多对多关系、ImageField 和 upload_to
我有下面这两个模型:
class EntryImage(models.Model):
image = models.ImageField(upload_to="entries")
class Entry(models.Model):
code = models.CharField(max_length=70, unique=True)
images = models.ManyToManyField(EntryImage, null=True, blank=True)
如你所见,Entry可以有0张或多张图片。我的问题是:有没有办法设计这样的结构,并根据Entry的代码动态改变上传的路径?
2 个回答
0
你可以把 upload_to
设置成一个可以调用的函数,这样它在被使用时会接收到它所关联的模型实例。不过,这个模型实例可能还没有被保存,这样的话你可能就无法查询到 Entry 代码了。
1
其实不需要跑题太远,你可以创建一个中间表叫做 EntryImageDir,里面存放目录名称。然后,你可以通过外键把你的 EntryImages 连接到这个表上。你可以在创建 Entry 的时候,或者在上传文件的时候,来创建这个 EntryImageDir。
关于带自定义字段的多对多关系的文档可以在这里找到: http://www.djangoproject.com/documentation/models/m2m_intermediary/