Как добавить поля в модель стороннего приложения?

Я работаю над веб-страницей, которая использует приложение 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

Если стороннее приложение не может быть легко настроено, я бы предложил разработчику обновить его и указать на ссылки выше для примеров того, как это сделать.

Другие вопросы по тегам