Как добавить поля в модель стороннего приложения?
Я работаю над веб-страницей, которая использует приложение Django-викторина. Когда вы устанавливаете django-quiz
Вы можете создавать викторины, вопросы и т. д. в Admin
,
К сожалению, нет способа, как назначить Quiz
к моей модели Language
так что я ищу способ, как добавить поле Language
в модель Quiz
,
Я пробовал это, но это не работает. Я уже пытался создать модель прокси с дополнительным полем, но я понял, что это невозможно в моделях прокси.
from quiz.models import Sitting,Quiz
class QuizAddLanguage(models.Model):
quiz = models.OneToOneField(Quiz)
language = models.ForeignKey(Language)
Знаете ли вы, что нужно сделать, чтобы добавить поле в модель стороннего приложения?
2 ответа
Для этого времени должно хватить OneToOne - для каждого языка будет один тест
Так как он один к одному, вы можете просто определить отношения в своем собственном языковом классе, по умолчанию django предоставит вам значение обратного поиска
language_obj.quiz
quiz_obj.language
оба будут действительны.
Вот соответствующий билет Django, который был закрыт с разрешением "wontfix" шесть лет назад:
https://code.djangoproject.com/ticket/14969
Я думаю, что этот комментарий предоставляет некоторую хорошую информацию:
Комментарии дают вам * правильный * способ решения этой проблемы - вы определяете интерфейс и делаете саму модель подключаемой. Не все приложения-вкладчики Django следуют такому подходу, но это не значит, что мы запекаем обезьянью патч в ядро - мы исправляем приложения-вкладчики.
django.contrib.comments
в настоящее время является автономным приложением, но его все же относительно легко настроить. Вот соответствующая документация:
https://django-contrib-comments.readthedocs.io/en/latest/custom.html
Если стороннее приложение не может быть легко настроено, я бы предложил разработчику обновить его и указать на ссылки выше для примеров того, как это сделать.