2017-01-30 117 views
1

問題:一羣人可以使用不同類型的樂器,但相同類型的樂器無法區分。例如,一個團隊可以使用3個錘子和4個軸,但我們不需要區分各個軸或錘子。 UPD:有一天,我們可以使用另一種我們現在無法想象的樂器類型。如何在Django模型中實現類似字典的字段?

在這種情況下如何設計一個Django模型?

我的想法:

class Person(models.Model): 
    name = models.CharField() 

class Group(models.Model): 
    title = models.CharField() 
    members = models.ForeignKey(Person) 
    equip = ??? 

我發現this question on StackExchangecode snippet for a Django Dictionary model,但我仍然不知道該選擇什麼樣的方法。 更多的還有django-jsonfielddjango-picklefield適合字典。

另外,我真的需要一本字典嗎?

+0

首先你需要決定這是否是正確的做法。正常化您的數據庫可能是一個更好的主意 – e4c5

+0

我不確定我瞭解您的意見。如果我確實區分各個軸,我可以規範DB。但我沒有,當我要求某人填寫報告時,他報告「我們使用了2軸和3把錘子」,這正是我想要存儲的信息。 //我看到的另一種方法是使我們的可用儀器類型保持不變。但有一天我們可以使用另一種我們現在無法想到的工具。 –

+1

所以你真正需要的是一個類似'tool | job | number_used'的表格。 – e4c5

回答

1

您有與團體相關的人員。您根據工作,設備類型和數量將一組人員分配到特定的工作和跟蹤設備。

class Group(models.Model): 
    title = models.CharField() 

class Person(models.Model): 
    name = models.CharField() 
    group = models.ForeignKey(Group) 

class Job(models.Model) 
    name = models.CharField() 
    group = models.ForeignKey(Group) 

class EquipmentUsage(models.Model) 
    job = models.ForeignKey(Job) 
    equip_name = models.CharField() 
    count = models.IntegerField() 
+0

謝謝。您的回答以及來自e4c5的意見已經解決了我的問題。 –

相關問題