django互相注册多个管理员链接

时间:2016-09-02 03:07:49

标签: python django django-admin

嗨,我还是django的新手。我计划创建一个管理员,我可以添加一个测验,问题和选择。测验有问题,问题有选择。我只能做(测验和问题)和(问题和选择)。

这是我的模特。

class Quiz(models.Model):
    quiz_title = models.CharField(max_length=200)
    created_date = models.DateTimeField('date created')
    expired_date =  models.DateTimeField(
        null=True, blank=True)

    def __str__(self):
        return self.quiz_title

class Question(models.Model):
    quiz = models.ForeignKey(Quiz, on_delete=models.CASCADE)
    question_text = models.CharField(max_length=200)
    answer = models.CharField(max_length=200,blank=True)


    def __str__(self):
        return self.question_text

class Choice(models.Model):
    question = models.ForeignKey(Question, on_delete=models.CASCADE)
    choice_text = models.CharField(max_length=200)


    def __str__(self):
        return self.choice_text

class UserSession(models.Model): #for future use. 
    user = models.ForeignKey(User)
    quiz = models.ForeignKey(Quiz, on_delete=models.CASCADE)
    question = models.ForeignKey(Question, on_delete=models.CASCADE)
    user_answer = models.CharField(max_length=200)

这是我的管理员     来自django.contrib import admin

# Register your models here.
from .models import Choice, Question, Quiz

class ChoiceInline(admin.TabularInline):
    model = Choice
    extra = 3
class QuestionInline(admin.TabularInline):
    model = Question
    extra = 3
class QuestionAdmin(admin.ModelAdmin):
    fieldsets = [
        (None,  {'fields': ['question_text']}),
        ('Date Information', {'fields': ['question_text'], 'classes':    ['collapse']}),
    ]
    inlines = [ChoiceInline]
    list_filter = ['question_text']
    search_fields = ['question_text']
    list_display = ('question_text',)
class QuizAdmin(admin.ModelAdmin):
    fieldsets = [
        (None,  {'fields': ['quiz_title']}),
        ('Date Information', {'fields': ['created_date'], 'classes':    ['collapse']}),
    ]
    inlines = [QuestionInline]
    list_filter = ['created_date']
    search_fields = ['quiz_title']
    list_display = ('quiz_title', 'created_date')

admin.site.register(Quiz, QuizAdmin)
#~ admin.site.register(Question, QuestionAdmin)

1 个答案:

答案 0 :(得分:0)

Django不支持嵌套的内联,而不是自己构建此功能,也不使用管理员嵌套的内联应用程序,但我并不是最新的。

一种常见的模式是直接链接到您的子对象作为新的ModelAdmin视图。

创建一个呈现链接的只读字段。

class QuestionInline(admin.TabularInline):
    model = Question
    extra = 3
    readonly_fields = ('link', )
    def link(self, obj):
        return '<a href="%s" target="_blank">Edit</a>' % reverse('admin:appname_modelname_change', args=[obj.id])

    link.allow_tags = True