十五.增加一個項目協作留言板功能(一)----- 建立留言板的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






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