использование наследования классов в Django для полиморфизма? - PullRequest
0 голосов
/ 26 июля 2010

Мне нужна ваша помощь в следующем вопросе:

в моих моделях django существуют следующие классы:

class QItem(models.Model)


class Question(QItem)


class QuestionSet(QItem):
    items = models.ManyToManyField(QItem, blank=True, null=True, through='Ordering', related_name="contents")


class Ordering(models.Model):
    item = models.ForeignKey(QItem)
    qset = models.ForeignKey(QuestionSet, related_name="questionSet")
    order = models.IntegerField(unique=True)

Таким образом, QuestionSet должен иметь возможность содержать как объекты Question, так и другиеОбъекты QuestionSet в порядке, указанном в Ordering.order.

При выполнении

o1 = Ordering(item=q, qset=q1)

, где q1 - объект Вопроса, я получаю

ValueError: Cannot assign "[<Question: q1>]": "Ordering.item" must be a "QItem" instance.

Что такоеправильный способ получить эту функциональность?(чтобы можно было одновременно обрабатывать и вопросы, и наборы вопросов?) Возможно ли это?

1 Ответ

0 голосов
/ 27 июля 2010

Хотя я еще не тестировал его, кажется, что возможное разрешение может заключаться в следующем:

http://bserve.webhop.org/wiki/django_polymorphic/doc

, и оно должно быть таким же простым, как показано ниже (скопировано сверхуссылка для удобства)

from polymorphic import PolymorphicModel

class ModelA(PolymorphicModel):
    field1 = models.CharField(max_length=10)

class ModelB(ModelA):
    field2 = models.CharField(max_length=10)

class ModelC(ModelB):
field3 = models.CharField(max_length=10)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...