十五.增加一个项目协作留言板功能(一)----- 建立留言板的model



前十四章节已经介绍了如何用django来建立一个信息系统,解决了增删改查的问题。那么接下来,为了适应工作需要,我们在此建立一个简单的项目协作留言板功能。项目留言板可以通过新建项目,同时大家可以在项目留言板上留言,来互相协作。

 

  1. 设计留言板的功能

     

留言板主要分为项目和实施步骤。一个项目对应多个步骤,所以是一对多的关系。同时,允许上传附件,而一个项目也对应多个附件,所以与附件的关系也是一对多的关系。而一个项目有多个人实施,一个人也会实施多个项目。因此,项目与人员的关系是多对多的关系。





2.建立相关模型

#建立职员模型,这是对内置user表的扩展
class Employee(models.Model):
    #对应User表,建立一对一的模型,目的是更好地扩展而不影响原user表结构
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    #定义user的职责
    responsibility = models.CharField(max_length=100,blank=True)

    def __unicode__(self):
        return self.user.username
#建立任务表
class Task(models.Model):
    #执行的任务和人员关系是多对多的关系
    task_member = models.ManyToManyField(Employee)
    #为任务类型分类
    category = (
        (U'综合事务','综合事务'),
        (U'机构建设','机构建设'),
        (U'线路事务','线路事务'),
    )
    #任务的流水号
    task_code = models.CharField(max_length=30, default='error_code')
    #任务的名称
    task_title = models.CharField(verbose_name='任务名称',max_length=100)
    #任务的分类
    task_category = models.CharField(verbose_name='任务分类',max_length=100,choices=category,default='综合事务')
    #任务的联系人
    task_contacts = models.TextField(verbose_name='联系人',blank=True)
    #任务状态
    task_status = models.CharField(verbose_name='处理中',max_length=20,default='处理中')
    #任务登记人
    task_signer = models.CharField(max_length=30,default='system')
    #任务登记时间
    task_signtime = models.DateField(auto_now_add=True)

    def __unicode__(self):
        return self.task_title

#建立实施步骤
class Process(models.Model):
    #与task表格是一对多的关系,依附于task之上
    task = models.ForeignKey(Task)
    #实施步骤内容
    process_content = models.TextField(blank=True)
    #实施步骤登记时间
    process_signtime = models.DateTimeField(auto_now_add=True)
    #实施步骤登记人
    process_signer = models.CharField(max_length=30,default='system')

    def __unicode__(self):
        return self.process_content

#上传附件
class Upload(models.Model):
    #与task表格是一对多的关系,依附于task之上
    task = models.ForeignKey(Task)
    #上传附件名称
    upload_title = models.CharField(max_length=255)
    #上传附件路径
    upload_path = models.CharField(max_length=255)
    #上传附件时间
    upload_signtime = models.DateTimeField(auto_now_add=True,null=True)

    def __unicode__(self):
        return self.upload_title






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章