具有不同模型字段的自定义 Wagtail 管理页面

问题描述

我的目标是仅注册和创建一个 Wagtail 管理页面,我可以在其中创建/编辑/查看问题模型的对象,但也可以通过外部添加与此模型相关的其他模型的其他字段键(假设创建 Question 模型的实例也可以创建 QuestionVersion 和 AnswerVersion 模型的实例,如 models.py 文件所示:

...
class Question(models.Model):
    filepath = models.CharField(max_length=255,null=True,blank=True)
    slug = models.CharField(max_length=255,blank=True)
    order = models.CharField(max_length=255,blank=True)
    category = models.ForeignKey('wiki.Article',on_delete=models.SET_NULL,blank=True)
    user = models.ForeignKey(User,blank=True,null=True)

    def __str__(self):
        return "{}".format(self.id)

class QuestionVersion(models.Model):
    question = models.ForeignKey(Question,on_delete=models.CASCADE)
    slug = models.CharField(max_length=255,null=True)
    title = models.TextField(max_length=255)
    description = models.TextField(null=True,blank=True)
    categories = models.ManyToManyField(Article,blank=True)
    approved = models.BooleanField(default=False)

class AnswerVersion(models.Model):
    question_version = models.ForeignKey(QuestionVersion,on_delete=models.CASCADE)
    text = models.TextField()
    correct = models.BooleanField(default=False)

    def __str__(self):
        return self.text
...

现在我正在注册/生成 3 个页面以在我的 wagtail_hooks.py(管理问题模型实例)中完成任务:

...
class QuestionAdmin(ModelAdmin):
    model = Question
    list_display = ('id','user')

class QuestionVersionAdmin(ModelAdmin):
    model = QuestionVersion
    list_display = ('question','title','description','categories','approved')

class AnswerVersionAdmin(ModelAdmin):
    model = AnswerVersion
    list_display = ('question_version','text','correct')

class Admin(ModelAdminGroup):
    menu_label = 'Questions Admin'
    items = (QuestionAdmin,QuestionVersionAdmin,AnswerVersionAdmin)

modeladmin_register(Admin)
...

鉴于 QuestionVersion 模型中的 question 字段是 Question 模型的外键,而 AnswerVersion 模型中的 question_version 字段是 QuestionVersion 模型的外键,我希望在 wagtail_hooks.py 文件中包含的内容类似于这个:

...
class FullQuestionAdmin(ModelAdmin):
    models(source) = Question,QuestionVersion,AnswerVersion(models.py)
    list_display = ('id','user','approved','correct')

class Admin(ModelAdminGroup):
    menu_label = 'Questions Admin'
    items = (FullQuestionAdmin)

modeladmin_register(Admin)
...

这样我就可以在 Wagtail 的一个管理页面中查看/创建/编辑问题。我怎样才能做到这一点?是否有可能? ,提前致谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)