2013-12-05 2 views
1

Создание пользовательской формы приложения я получил следующего models.pyДжанго - получение связанных подклассов объекты

#models.py 
class Question(models.Model): 
    question_title = models.TextField(...) 


class Answer(models.Model): 
    answer_title = models.TextField(...) 
    question = models.ForeignKey(Question) 

    class Meta: 
     abstract = True 


class BoolAnswer(Answer): 
    result = models.BooleanField(...) 
    if_answer = models.TextField(...) 
    else_answer = models.TextField(...) 

class NumberAnswer(Answer): 
    answer = models.DecimalField(...) 

class MultipleChoiceAnswer(...): 
    .... 

Теперь я пытаюсь получить ответы на все вопросы, принадлежащими к одному вопросу с помощью:

question.answer_set.all() 

, который не делает существовать. Есть только

question.boolanswer_set 
question.numberanswer_set 
.... 

т.д.

Есть элегантный способ получить ответы на все вопросы?

+1

'answer_set' не существует, если у вас нет атрибута' related_name'. Можете ли вы отредактировать вопрос с трассировкой? – karthikr

+1

[Это 'InheritenceModelManager'] (https://django-model-utils.readthedocs.org/en/latest/managers.html#inheritancemanager), упомянутый в одном из ответов в дубликатной ссылке –

ответ

0

Как упомянуто @ TimmyO'Mahony: Нужно

https://django-model-utils.readthedocs.org/en/latest/managers.html#inheritancemanager

следующий код работает: (ТНХ @kathikr):

class Answer(models.Model): 
    answer_title = models.TextField(...) 
    question = models.ForeignKey(Question, related_name='answer_set') 

    class Meta: 
     abstract = True 

    objects = InheritanceManager() 

Теперь question.answer_set.all() получает весь ответ подкласс объектов

Смежные вопросы