2015-05-19 76 views
0

我想使用方法在ImageField字段中设置动态upload_to。喜欢的东西thisDjango - 从QuerySet获取数据库别名

def content_file_name(instance, filename): 
    return '/'.join(['content', instance.database_alias, filename]) 

class Content(models.Model): 
    name = models.CharField(max_length=200) 
    user = models.ForeignKey(User) 
    file = models.FileField(upload_to=content_file_name) 

更新

我不知道这有什么用,但我使用Django的1.7.1

我在做一个试验与模型以上:

models.py

from django.db import models 


def content_file_name(instance, filename): 
    print "INSTANCE(%s)" % instance._state.db 
    return "/".join(instance._state.db, filename) 


class Cliente(models.Model): 

    class Meta: 
     verbose_name = "Cliente" 
     verbose_name_plural = "Clientes" 

    Nombre = models.CharField("Nombre", max_length=50) 
    Foto = models.ImageField(upload_to=content_file_name) 

    def __unicode__(self): 
     return "Hello World" 

    MY_FIELDS = ["Nombre", "Foto"] 

我得到的终端形式提交:

终端

INSTANCE(None) 
[19/May/2015 21:19:55] "POST /default/clientes/new HTTP/1.1" 500 168242 

另一种选择,可以使进口并获得数据库别名,但我不知道在哪里从尚未得到这个。

回答

0

instance._state.db应该返回数据库别名。

+0

也许这个工作的另一个Django版本,但不要在Django 1.7.1或至少没有'ImageFields' – MikeVelazco

相关问题