У меня есть довольно общая модель:
class Keyword(models.Model):
ancestors = models.ManyToManyField(Keyword)
name = models.CharField()
description = models.CharField()
Проблема в том, что у меня есть несколько разных типов ключевых слов, которые имеют разные формы бизнес-логики. Некоторым, например, никогда не разрешают иметь каких-либо предков. Другие никогда не могут быть предками.
Это становится более сложным, но основной вопрос заключается в следующем: я могу создать плоский класс и, возможно, использовать тип enum, но тогда я не уверен, как бы я обеспечил, чтобы, например, предки могли иметь определенный тип. Или я мог бы создать иерархию классов, но тогда я бы не смог сделать что-то вроде models.ManyToManyField (Keyword), потому что мне нужно было бы включить несколько типов.
Я думаю, что могу обойти эту дилемму, но она беспорядочная и совсем не похожа на чистую бизнес-логику. Любые предложения, как сделать это красиво?