如何更改/ monkeypatch model.auth组__str__方法?

时间:2018-09-27 12:50:49

标签: python django django-models monkeypatching

我想用新的__str__方法修补Django Group模型。 我知道如何修补Group的经理,但不适用于__str__方法。

这是我想放入组模型中的新方法:

def __str__(self):
    return self.name if 'test' not in self.name else self.virtual_group.title

virtual_group是与另一个模型的关联名称,我要用它的标题替换。

我想实现什么? 我的数据库组中有这样的内容:

Super Group 
Extra Group 
New Group 
test_1 
test_2 
test_3 
Great Group
test_4 
(...)

test_X组是具有相关名称virtual_group的一对一字段。我必须这样做,因为我需要在组中使用唯一的名称,但是可见的名称可以相同。

我只是想更改__str__方法,以自动将组名'test_x'从相关模型的标题更改为普通字符串。

我尝试过这样的事情:

def __str__(self):
    return self.name if 'tour' not in self.name else self.virtual_group.title

Group.__str__ = __str__

或者这个:

class Group(Group):
    def __str__(self):
        return self.name if 'tour' not in self.name else self.virtual_group.title

然后与经理一起

class DefaultGroupManager(models.Manager):
    def __str__(self):
        return self.name if 'tour' not in self.name else self.virtual_group.title

    def get_queryset(self):
         (...)

dgm = DefaultGroupManager()
dgm.contribute_to_class(Group, 'objects')
Group.objects = dgm

但是这些都不起作用,我没有错误,但是什么也没发生

我无法创建新的扩展模型,因为这需要更改数百万行代码。将组类似于扩展组(组)。

我将不胜感激!

0 个答案:

没有答案