Из другого установленного приложения у меня есть такие модели
class Organization(model.Model):
name = models.CharField(max_length=255, blank=True)
class Person(model.Model):
name = models.CharField(max_length=255, blank=True)
class Membership(model.Model):
organization = models.ForeignKey(
Organization,
related_name='memberships',
# memberships will go away if the org does
on_delete=models.CASCADE,
help_text="A link to the Organization in which the Person is a member.")
person = models.ForeignKey(
Person,
related_name='memberships',
null=True,
# Membership will just unlink if the person goes away
on_delete=models.SET_NULL,
help_text="A link to the Person that is a member of the Organization.")
В моем приложении мне нужно добавить какой-нибудь метод для некоторых моделей.Итак, у меня есть модель типа
class ProxiedOrganization(other_app.models.Organization):
class Meta:
proxy = True
special_attribute = 'foo'
class ProxiedPerson(other_app.models.Person):
class Meta:
proxy = True
def special_method(self):
print('I do something special')
Когда я получаю членство от организации, они имеют тип other_app.models.Person
.
> type(proxied_org_instance.memberships[0].person)
<class 'other_app.models.Person'>
, но я бы хотел, чтобы они былимои экземпляры моего прокси-класса
> type(proxied_org_instance.memberships[0].person)
<class 'my_app.models.ProxiedPerson'>
Есть ли хороший способ сделать это?Это то, что я могу сделать с диспетчером запросов?Решение должно работать для Django 2.0.