Я хочу установить патч модели 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
Но ничего из этого не сработало, у меня нет ошибок, но ничего не происходит
Я не могу создать новую расширенную модель, потому что это требует изменения миллионов строк кода.От группы к расширенной группе (группа).
Буду признателен за любую помощь!