Python 在管理员管理器中添加2个模型

Python 在管理员管理器中添加2个模型,python,django,django-models,django-admin,Python,Django,Django Models,Django Admin,我有两个模型,问题和图像。我想在django admin中创建一个管理器,在问题管理面板中包含图像字段 这些是模型: class Question(models.Model): quiz = models.ManyToManyField(Quiz, blank=True, ) category = models.ForeignKey(Category, blank=True, null=True, ) content = models.CharField(max_l

我有两个模型,问题和图像。我想在django admin中创建一个管理器,在问题管理面板中包含图像字段

这些是模型:

class Question(models.Model):

    quiz = models.ManyToManyField(Quiz, blank=True, )

    category = models.ForeignKey(Category, blank=True, null=True, )

    content = models.CharField(max_length=1000, 
                               blank=False, 
                               help_text="Enter the question text that you want displayed",
                               verbose_name='Question',
                               )

    explanation = models.TextField(max_length=2000,
                                   blank=True,
                                   help_text="Explanation to be shown after the question has been answered.",
                                   verbose_name='Explanation',
                               )


    class Meta:
        verbose_name = "Question"
        verbose_name_plural = "Questions"
        ordering = ['category']


    def __unicode__(self):
        return self.content



class Image(models.Model):
    TYPE_CHOICES = (
        ('A','Answer'),
        ('Q','Question'),
    )
    image = models.ImageField(upload_to='static/img')
    type = models.CharField(max_length=1, choices=TYPE_CHOICES)
    question = models.ForeignKey(Question, blank=True, null=True)
    answer = models.ForeignKey(Answer, blank=True, null=True)

    def __unicode__(self):
        return self.type
这是Django Admin中的问题管理器:

class QuizAdminForm(forms.ModelForm):
    class Meta:
        model = Quiz

    questions = forms.ModelMultipleChoiceField(
                                               queryset=Question.objects.all(),
                                               required=False,
                                               widget=FilteredSelectMultiple(verbose_name=('Questions'),
                                                                             is_stacked=False                                                                           )
                                               )

    def __init__(self, *args, **kwargs):
        super(QuizAdminForm, self).__init__(*args, **kwargs)
        if self.instance.pk:
            self.fields['questions'].initial = self.instance.question_set.all()

    def save(self, commit=True):
        quiz = super(QuizAdminForm, self).save(commit=False)
        if commit:
            quiz.save()
        if quiz.pk:
            quiz.question_set = self.cleaned_data['questions']
            self.save_m2m()
        return quiz

您正在查看
InlineModelAdmin
models

class ImageInline(admin.TabularInline):
    model = Image
    ...

class QuestionAdmin(admin.ModelAdmin):
    list_display = ('content', 'category', )
    list_filter = ('category',)
    fields = ('content', 'category', 'quiz', 'explanation')

    search_fields = ('content', 'explanation')
    filter_horizontal = ('quiz',)

    inlines = [AnswerInline, ImageInline]

很高兴看到您正在使用Django测验应用程序。我最近对其进行了很多修改,如果您能为回购协议做出任何贡献,那就太好了: