前十四章節已經介紹瞭如何用django來建立一個信息系統,解決了增刪改查的問題。那麼接下來,爲了適應工作需要,我們在此建立一個簡單的項目協作留言板功能。項目留言板可以通過新建項目,同時大家可以在項目留言板上留言,來互相協作。
-
設計留言板的功能
留言板主要分爲項目和實施步驟。一個項目對應多個步驟,所以是一對多的關係。同時,允許上傳附件,而一個項目也對應多個附件,所以與附件的關係也是一對多的關係。而一個項目有多個人實施,一個人也會實施多個項目。因此,項目與人員的關係是多對多的關係。
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