我試圖創建以下情形的典範項目:Django模型 - 創造出必須通過各種任務
的項目進行輸送,具有通過各種任務,按照一定的順序通過。 只要項目通過任務,該任務就被標記爲已完成。 任務的名稱是事先已知的。
例如:
- 創建項目
- 任務1 '註冊項目'
- 任務2 '安裝項目'
- 任務3 '檢查項目的日誌'
我從一個像這樣的簡單模型開始,b它對我來說看起來很靜,而不是我真正想要的。
models.py
class Item(models.Model):
item_id = models.PositiveIntegerField()
item_priority = models.PositiveSmallIntegerField(default=2)
item_date_created = models.DateField(auto_now_add=True)
task1_name = models.CharField(max_length=128)
task1_done_by = models.CharField(max_length=64, blank=True)
task1_done_date = models.DateField(null=True, blank=True)
task2_name = models.CharField(max_length=128)
task2_done_by = models.CharField(max_length=64, blank=True)
task2_done_date = models.DateField(null=True, blank=True)
# ... next 20 tasks
def __str__(self):
return str(self.item_id)
試圖關係領域,例如多對多字段預先定義的任務,我結束了這一點:
class Task(models.Model):
name = models.CharField(max_length=128)
done_by = models.CharField(max_length=64, blank=True)
done_date = models.DateField(null=True, blank=True)
class Item(models.Model):
item_id = models.PositiveIntegerField()
item_priority = models.PositiveSmallIntegerField(default=2)
item_date_created = models.DateField(auto_now_add=True)
tasks = models.ManyToManyField(Task)
但是,如果我創建了兩個項目進行相同的任務和第一項的任務標記爲完成它將被標記爲第二項中的完成 - 這不是我想要的。
如何將任務分配給特定項目?或者哪個其他模型最適合我的場景?
我已經調整了我的問題有點澄清我的問題:如果我創建兩個項目具有相同的任務和標記的第一項任務完成後,它會在第二項中標記爲已完成 - 這不是我想要的,我正在尋找解決方案。 –
類Item(models.Models)是數據庫對象的模板。您可以從中創建實例。如果您將一個任務實例鏈接到兩個項目實例並更新任務,則鏈接到這兩個項目的鏈接將會相同。你需要做的是爲item1創建task1,爲item2創建task2。這樣你分開的任務。 – rollinger
我開始明白了。我必須創建新任務並將其鏈接到每個新項目,並且不能重複使用它們。你碰巧有一個手動創建和添加任務的代碼示例嗎? –