python – Django模型类和自定义属性
你好 – 今天发生了一个奇怪的问题:
我在Django中有一个modle类,并为它添加了一个自定义属性,它不能保存到数据库中,因此不代表模型结构: class Category(models.Model): groups = models.ManyToManyField(Group) title = defaultdict() 现在,当我在shell中或编写测试时,我会执行以下操作: c1 = Category.objects.create() c1.title['de'] = 'german title' print c1.title['de'] # prints "german title" c2 = Category.objects.create() print c2.title['de'] # prints "german title" <-- WTF? 似乎“头衔”具有全球性.如果我将标题更改为一个简单的字符串,它按预期工作,所以它必须对dict做一些事情?我也尝试将title设置为属性: title = property(_title) 但这也行不通.那么,我该如何解决这个问题呢?先感谢您! 编辑: 以下是基本问题的意图,可以根据要求更好地了解整个周围的环境: 解决方法
不要这样做.您的title属性完全是“全局的”.它是类的一部分,而不是每个实例的一部分.
做这样的事情. class Category(models.Model): groups = models.ManyToManyField(Group) @property def title(self): return self._title def save( self,*args,**kw ): try: self._title except AttributeError: self._title= defaultdict() super( Category,self ).save( *args,**kw ) 如果您可以定义实际用例,则可以大大简化这一过程. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |