Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
(投票后教程)Django管理员:添加新的相关模型类型(自由响应、真/假等)后,如何添加到Django管理员_Django_Django Models_Admin - Fatal编程技术网

(投票后教程)Django管理员:添加新的相关模型类型(自由响应、真/假等)后,如何添加到Django管理员

(投票后教程)Django管理员:添加新的相关模型类型(自由响应、真/假等)后,如何添加到Django管理员,django,django-models,admin,Django,Django Models,Admin,我刚刚完成了Django民意测验教程。在本教程中,您基本上构建了一个多项选择题(包含相关选项的问题)。然后您可以配置管理员,这样您就可以得到这个非常好的“添加选项”按钮。(到目前为止,我喜欢Django) 我想建立一个测验应用程序,它也有其他问题类型,如自由回答、真/假等,并在一个称为测验的新模型下收集一系列不同的问题。我最终想在Django admin中获得一个“选择问题类型”按钮,但我该怎么做呢 以下是我对我的模型的尝试: (models.py) class Quiz(models.Mod

我刚刚完成了Django民意测验教程。在本教程中,您基本上构建了一个多项选择题(包含相关选项的问题)。然后您可以配置管理员,这样您就可以得到这个非常好的“添加选项”按钮。(到目前为止,我喜欢Django)

我想建立一个测验应用程序,它也有其他问题类型,如自由回答、真/假等,并在一个称为测验的新模型下收集一系列不同的问题。我最终想在Django admin中获得一个“选择问题类型”按钮,但我该怎么做呢

以下是我对我的模型的尝试:

(models.py)

class Quiz(models.Model):
    quiz_name = models.CharField

class Multiple_choice_question(models.Model):
    quiz = models.ForeignKey(Quiz)
    question_text = models.CharField    

class Free_response_question(models.Model):
    quiz = models.ForeignKey(Quiz)
    question_text = models.CharField

class Choice(models.Model):
    question = models.ForeignKey(Multiple_choice_question)
    choice_text = models.CharField
在我上面的模型中,多项选择问题和自由回答问题是相同的,除了多项选择问题有子项(选择)和自由回答问题没有子项(选择)之外,但我将创建许多不同的问题类型,除了问题\文本之外,还有许多不同的属性:例如,我将有带/不带图像的问题,其他问题的属性如“x分量”和“y分量”用于绘制向量作为问题,等等。,所以我不想对所有问题类型使用相同的模型,因为所有属性每次都会显示在管理中

我希望流程是:

登录管理员--->选择测验,或单击“添加新测验”-->创建测验后,应显示“选择问题类型”按钮--->选择问题类型后,应填充该问题类型的属性,我将填写并保存(或添加另一个问题类型)

这是教程留给我的admin.py代码。。。我将如何修改它以实现我想要的

from django.contrib import admin
from .models import Choice, Question

class ChoiceInline(admin.TabularInline):
    model = Choice
    extra = 3

class QuestionAdmin(admin.ModelAdmin):
    fieldsets = [
        (None,               {'fields': ['question_text']}),
        ('Date information', {'fields': ['pub_date'], 'classes': ['collapse']}),
    ]
    inlines = [ChoiceInline]
    list_display = ('question_text', 'pub_date', 'was_published_recently')
    list_filter = ['pub_date']
    search_fields = ['question_text']

admin.site.register(Question, QuestionAdmin)
这是我编辑它的尝试,但我还需要做什么

from django.contrib import admin
from .models import Quiz, Multiple_choice_question, Free_response_question, Choice

class ChoiceInLine(admin.TabularInline):
    model = Choice    

class MultipleChoiceQuestionInLine(admin.TabularInline):
    model = Multiple_choice_question
    inlines = [ChoiceInLine]

class FreeResponseQuestionInLine(admin.TabularInline):
    model = Free_response_question

class QuizAdmin(admin.ModelAdmin):
    inlines = *Choice of* [MultipleChoiceQuestionInLine, FreeResponseQuestionInLine, etc.]

admin.site.register(FreeResponseQuestionInLine, FreeResponseQuestionInLine, Quiz, QuizAdmin)

提前感谢,欢迎提出其他建议

哦,这可能是个大问题

好的,按照你的问题,当你选择一些“问题类型”时,页面上会显示一些不同的属性。要解决此问题,需要执行几个步骤

  • 使用AJAX、Javascript或JQuery技术从模板页面获取用户的选择,然后将请求(post/get)发送到特殊方法(例如/admin/get\u choice)
  • 设置此方法的url(url(r'^/admin/get\u choice/$,get\u choice))
  • 在方法get_choice中,获取参数作为从数据库搜索结果的选项,然后将结果返回到模板页面
  • 在模板页面,使用AJAX、Javascript或JQuery技术在模板页面上显示结果
  • 将所有内容发布到方法以将结果保存到数据库中
  • 完成了

  • 我希望这能给你一些建议

    谢谢你的回复。这似乎比我希望的要复杂。我希望有一些内置的功能来处理从多个相关的对象模型中进行选择,但我想不是每件事都很容易…是的,是的。Django只是一个框架。它只是把所有的东西放在一起,给你一个非常普通的使用方法。如果你有一些特殊的功能,特别是页面的效果,你必须自己开发它们。