Друзья, не могу сам разобраться и опыта не имею. У меня есть задачи и ресурсы, относится должны к друг другу многие ко многим. Я бы хотел сделать так чтобы можно было создавать новые типы ресурсов наследуя их от базового класса ресурс. Вот что накидал( пока плохо понимаю правильно ли и вообще не уверен что понял доку):

class Resource(models.Model):
    type = models.CharField(verbose_name="тип ресурса", max_length=150)
    object_id = models.PositiveIntegerField()
    content_type = models.ForeignKey(ContentType)
    content_object = generic.GenericForeignKey('content_type', 'object_id')
    class Meta:
        abstract = True

    def __str__(self):
        return self.type

class PeopleResource(Resource):
     person = models.ForeignKey(User)
    # pre save установлю тип ресурсы
class MaterialResource(Resource):
     # pre save установлю тип ресурсы




class Task(models.Model):
    name= models.CharField(max_length=255, verbose_name="задача")
    author = models.ForeignKey(User, related_name="created_tasks", verbose_name="автор")
    performer = models.ForeignKey(User, related_name="performed_tasks", blank=True, null=True, verbose_name="исполнитель")
    controller = models.ForeignKey(User, related_name="controlled_tasks", blank=True, null=True, verbose_name="контроллер")
    parent = models.ForeignKey('self', blank=True, null=True)
    project = models.ForeignKey(Project, blank=True, null=True)
    resources = generic.GenericRelation(Resource, blank=True, null=True) # xz можно ли генерики на абстрактные класы натравливать
    status = models.IntegerField(choices=STATUS_CHOICES)
    deadline = models.DateTimeField(verbose_name="крайний срок", blank=True, null=True)
    purpose = models.TextField(verbose_name="цель задачи", blank=True, null=True)
    description = models.TextField(verbose_name="описание", blank=True, null=True)

    def __str__(self):
        return "%s" % self.name