Пользовательский администратор для поля многие ко многим - PullRequest
0 голосов
/ 13 января 2012

У меня есть модель Question, которая может иметь несколько Answer экземпляров, каждый с заданным коэффициентом.

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

Я пробовал с полем «многие ко многим», как показано ниже, но по умолчанию администратор - множественный выбор со всеми ответами в БД.

В идеале мне бы хотелось, чтобы в моем администраторе вопросов была кнопка «Добавить ответ», которая позволила бы мне создать новый ответ и добавить его к моему вопросу.

Как мне этого добиться?

Спасибо

class Question(models.Model):
    answer = models.ManyToManyField(Response)

class Answer(models.Model):
    text = models.TextField()
    coefficient = models.IntegerField()

1 Ответ

0 голосов
/ 13 января 2012

Я думаю, что вас может заинтересовать форма Inlines .

В этом случае вам нужно удалить поле ManyToMany и добавить поле ForeignKey в модель ответа, а затем сообщить администраторучтобы добавить «встроенную» форму администратора в представление «Вопрос».

models.py

class Question(models.Model):
    ...


class Answer(models.Model):
    question = models.ForeignKey(Question)
    text = models.TextField()
    coefficient = models.IntegerField()

admin.py

class AnswerInline(admin.StackedInline):
    model = Answer


class QuestionAdmin(admin.ModelAdmin):
    inlines = [AnswerInline,]

Это должно делать именно то, что выask..

В объекте Question у вас будет объект 'answer_set', который ведет себя как обработчик ManyToMany.

В следующем примере объясняется, как получить набор запросов, содержащий все ответы, связанные с вашим вопросом.

my_question.answer_set.all()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...