无法设置ImageField url属性

我想改变我的ImageField的属性,但是我经常得到Can not set属性错误。 我的模特是
class Society(models.Model):
     name = models.CharField(max_length=200)
     slug = models.SlugField(unique=True)
     summary = models.TextField(blank=True,null=True)
     members = models.ManyToManyField(User,null=True,blank=True)
     gallery = models.ForeignKey(Gallery,null=True,blank=True)
     avatar = models.ImageField(upload_to=get_society_path)

     def save(self,*args,**kwargs):
          super(Society, self).save(*args,**kwargs)
          fix_avatar_path(self)

     def clean(self):
          if self.id:
               self.avatar.path = get_society_path(self,self.avatar.path)
               save_thumb(self.avatar.path)
我的助手功能是:
def get_society_path(instance,filename):
     seperator_val = instance.id
     if seperator_val is None:
          seperator_val = get_time()
     return '%s/society_%s/%s' % (settings.UPLOAD_ROOT,seperator_val,time_to_name(filename))

def fix_avatar_path(instance):
     org_society_path = get_society_path(instance,instance.avatar.name)
     make_upload_dir(org_society_path)
     move(instance.avatar.path,org_society_path)
     os.rmdir(os.path.dirname(instance.avatar.path))
     instance.clean()
问题是 : 我想将社会目录保存为social_society_id。但通常情况下,我无法在保存模型之前分配任何ID。所以我正在创建一个名称为时间值的tmp文件。然后要访问societies文件夹,我想重命名此文件。所以,我的fix_avatar只是在社会保存后将tmp文件的内容移动到society_(society_id)文件夹。到目前为止一切顺利。但是,我的社会的ImageField仍然保存以前创建的文件夹。为了改变它的价值,我发现我可以使用干净的方法。(从这个SO问题)但是我仍然得到相同的结果,路径不会改变,并给出“无法设置属性”的响应。 任何的想法 ??     
已邀请:
不确定,如果这个问题被问到,Django是否曾经改变过。关于这不可能的票仍然存在:https://code.djangoproject.com/ticket/15590 但是,您实际上可以通过这样做来改变路径:
self.avatar = 'uploads/example/path/'
这项工作还有什么作用:
self.avatar.name = 'uploads/example/path/'
它曾多次为我们工作过。     
问题出在这里:
self.avatar.path = get_society_path(self,self.avatar.path)
您无法在FileField / ImageField实例中更改path属性的值,它只是readonly。有人建议在Django 1.4中改变这一点     

要回复问题请先登录注册