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

来源:互联网 发布:个人理财产品 知乎 编辑:程序博客网 时间:2024/06/05 00:20


前十四章节已经介绍了如何用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






0 0
原创粉丝点击