如何制作django的管理页面做这个特别的事情?

时间:2011-11-06 18:26:29

标签: python django

我正在使用django管理页面将问题放入数据库。

我的models.py是这样的:

来自django.db导入模型

# Create your models here.

class Question(models.Model):
    question_name = models.CharField(max_length=200)
    question_type = models.CharField(max_length=20)
    def __unicode__(self):
            return self.question_name


class PythonQuestion(models.Model):
    question_no = models.ForeignKey(Question)
    question_text = models.TextField(max_length=1000)
    question_testcase = models.TextField(max_length=1000)
    question_difflevel = models.CharField(max_length=20)

我希望对我的django-admin页面进行这些特殊更改: -

  1. 截至目前,我可以从管理页面向Question模型和PythonQuestion模型添加内容。我想要的是我应该能够写入Question模型,然后被引导到一个页面,我可以将数据写入PythonQuestion模型。我的页面已启动并正在运行;我需要的只是指向链接。

  2. 我想上传每个问题的答案,这些问题都是某种文件格式(这里的格式无关紧要。让我们假设一个文本文件)。我如何在管理页面中执行此操作?

1 个答案:

答案 0 :(得分:1)

从概念上讲,我认为可能是。你可以read more about it in the django docs但基本上Django有3种类型的继承; 抽象,多表和代理,它们在不同的情况下都很有用:

  • 抽象继承在您的基类永远不需要自己实例化时很有用(即基本模型没有表,但它的子项都有表)
  • 当您拥有一个本身很有用但可以扩展的基础模型时,多元继承非常有用(即基本模型有一个表,而且它的子项都有表)
  • 代理在您只想扩展父模型的功能时很有用(即基本模型有一个表,但它的子项没有表)

和一个快速示例(多表):

class Answer(models.Model):
    answer_text = models.CharField(...)

class Question(models.Model):
    """What all questions have in common"""
    title = models.CharField(...)
    text = models.CharField(...)
    answer = models.ForeignKey(Answer)

class PythonQuestion(Question):
    """What specifics a python question might have"""
    python_version = models.CharField(...)

您将能够在django admin中一次性输入所有数据(对于多重和抽象继承,这是相同的)。此外,您对每个问题都有答案。如果需要(或通过管理员手动输入),可以通过灯具上传这些答案