(Post polls教程) Django admin: 添加新的相关模型类型后(free response, true/false, etc.),如何添加到Django admin
(Post polls tutorial) Django admin: After adding new related model type (free response, true/false, etc.), how to add to Django admin
我刚刚完成了 Django 投票教程。在本教程中,您实际上构建了一个多项选择题(具有相关选项的问题)。然后您配置管理员,这样您就可以获得这个非常好的 "ADD CHOICE" 按钮。 (到目前为止我喜欢 Django)
我想构建一个也有其他问题类型的测验应用程序,例如 free-response、true/false 等,并在称为测验的新模型下收集一系列不同的问题。我最终想在 Django 管理中获得一个按钮 "SELECT QUESTION TYPE",但我该怎么做呢?
这是我对模型的尝试:
(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
在我上面的模型中,Multiple_choice_question 和 Free_response_question 除了 Multiple_choice_question 有 children(选择)而 Free_response_question 没有,但我将创建许多不同的问题类型,具有 question_text 以外的许多不同属性:例如,我将有问题 with/without 图像,其他问题具有 "x-component" 和 "y-component" 用于绘制向量作为问题等,所以我不想对所有问题类型使用相同的模型,因为所有属性每次都会显示在管理员中。
我希望流程是:
登录管理员 ---> Select 测验,或单击 "ADD A NEW QUIZ" ---> 创建测验后,应该有一个按钮 "SELECT QUESTION TYPE" ---> 选择问题类型后,它应该填充该问题类型的属性,我将填写并保存(或添加其他问题类型)。
这是本教程留给我的 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)
提前致谢,欢迎任何其他建议!
哦,这可能是个大问题。
好的,按照你的问题,当你选择一些"Question Type"时,页面上会显示一些不同的属性。要解决此问题,您需要执行几个步骤。
- 使用AJAX, Javascript OR JQuery TECH从模板页面获取用户的选择,然后发送一个请求(post / get)到一个特殊的方法(例如,/admin/get_choice)
- 为此方法设置一个url(url(r'^/admin/get_choice/$', get_choice)).
- 在方法 get_choice 中,获取参数作为从数据库搜索结果的选项,然后 return 将结果返回到模板页面。
- 在模板页面,使用 AJAX、Javascript 或 JQuery TECH 在模板页面上显示结果。
- POST 一切都以一种方法将结果保存到数据库中。
- 完成。
希望能给大家一些建议。
我刚刚完成了 Django 投票教程。在本教程中,您实际上构建了一个多项选择题(具有相关选项的问题)。然后您配置管理员,这样您就可以获得这个非常好的 "ADD CHOICE" 按钮。 (到目前为止我喜欢 Django)
我想构建一个也有其他问题类型的测验应用程序,例如 free-response、true/false 等,并在称为测验的新模型下收集一系列不同的问题。我最终想在 Django 管理中获得一个按钮 "SELECT QUESTION TYPE",但我该怎么做呢?
这是我对模型的尝试:
(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
在我上面的模型中,Multiple_choice_question 和 Free_response_question 除了 Multiple_choice_question 有 children(选择)而 Free_response_question 没有,但我将创建许多不同的问题类型,具有 question_text 以外的许多不同属性:例如,我将有问题 with/without 图像,其他问题具有 "x-component" 和 "y-component" 用于绘制向量作为问题等,所以我不想对所有问题类型使用相同的模型,因为所有属性每次都会显示在管理员中。
我希望流程是:
登录管理员 ---> Select 测验,或单击 "ADD A NEW QUIZ" ---> 创建测验后,应该有一个按钮 "SELECT QUESTION TYPE" ---> 选择问题类型后,它应该填充该问题类型的属性,我将填写并保存(或添加其他问题类型)。
这是本教程留给我的 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)
提前致谢,欢迎任何其他建议!
哦,这可能是个大问题。
好的,按照你的问题,当你选择一些"Question Type"时,页面上会显示一些不同的属性。要解决此问题,您需要执行几个步骤。
- 使用AJAX, Javascript OR JQuery TECH从模板页面获取用户的选择,然后发送一个请求(post / get)到一个特殊的方法(例如,/admin/get_choice)
- 为此方法设置一个url(url(r'^/admin/get_choice/$', get_choice)).
- 在方法 get_choice 中,获取参数作为从数据库搜索结果的选项,然后 return 将结果返回到模板页面。
- 在模板页面,使用 AJAX、Javascript 或 JQuery TECH 在模板页面上显示结果。
- POST 一切都以一种方法将结果保存到数据库中。
- 完成。
希望能给大家一些建议。