Я пытаюсь создать систему обмена сообщениями, в которой отправителем и получателями сообщения могут быть общие объекты. Это кажется хорошим для отправителя, где есть только объект для ссылки (GenericForeignKey), но я не могу понять, как это сделать для получателей (GenericManyToManyKey?)
Ниже приведен упрощенный пример. PersonClient и CompanyClient наследуют атрибуты от Клиента, но имеют свои собственные конкретные данные. Последняя строка - это точка прилипания. Как вы разрешаете получателям сообщений быть набором корпоративных клиентов и PersonClients
  class Client(models.Model):
      city = models.CharField(max_length=16)
      class Meta:
          abstract = True
  class PersonClient(Client):
      first_name = models.CharField(max_length=16)
      last_name = models.CharField(max_length=16)
      gender = models.CharField(max_length=1)
  class CompanyClient(Client):
      name = models.CharField(max_length=32)
      tax_no = PositiveIntegerField()
  class Message(models.Model):
      msg_body = models.CharField(max_length=1024)
      sender = models.ForeignKey(ContentType)
      recipients = models.ManyToManyField(ContentType)