Как изменить / monkeypatch model.auth метод __str__ группы? - PullRequest
0 голосов
/ 27 сентября 2018

Я хочу установить патч модели Django Group с помощью нового метода __str__.Я знаю, как настроить менеджер группы monkeypatch, но он не работает с методом __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

Но ничего из этого не сработало, у меня нет ошибок, но ничего не происходит

Я не могу создать новую расширенную модель, потому что это требует изменения миллионов строк кода.От группы к расширенной группе (группа).

Буду признателен за любую помощь!

...