我想要做的是一個數據庫來跟蹤個人記錄。 模型幾乎完成,但我面臨一些困難,以存儲不同類型的記錄。Django模型的可變類型的數據
有時間記錄,體重,對於重複/圈,距離......所以,有diferent類型的數據:時間,十進制整數...
起初,我創建了一個表(或django類)爲每種類型的數據。時間表,其他重量(小數)等等。
但我不知道是否有更好的解決方案,只保留一個表的所有記錄。
我給分離表/模型(所以,我有對於每種類型的一個類,共5個)代碼:(此效果很好,但我必須預先選擇apropriate模型中插入數據)
class PRWeight(model.Models): # there are PRDistance, PRLaps, PRHeight, PRTime
user = FK(User)
exercise = FK(Exercise)
date = datefield()
weight = decimalfield() # integer, integer, decimal, time
class Meta:
unique_together = [user, exercise, date,]
或者,我可以做這樣的事情,如果它是一個好或有更好的解決方案:
class PR(models.Model):
user = FK(User)
exercise = FK(Exercise)
date = datefield()
metric = FK(Metric) # choose between time, weight, height...
# the aspect beeing mesured
record = # how can I call the right field type?
或者我可以repalce與空白等五大領域領域的「記錄」 =真
class PR(models.Model):
user = FK(User)
exercise = FK(Exercise)
date = datefield()
metric = FK(Metric) # choose between time, weight, height, distance...
# the aspect beeing mesured
# not necessary in this approach
wheight = decimalfield(blank=True)
height = decimalfield(blank=True)
time = timefield(blank=True)
distance = integerfield(blank=True)
laps = integerfield(blank=True)
我正在尋找一個簡單的解決方案。到目前爲止,我傾向於選擇最後一個示例,因爲它很簡單,但填寫表單的用戶可能會犯錯誤...
創建一個抽象模型存放所有類似的數據,然後單獨你的每個模型的具體數據到它的每一個。 您可以使用Abastract模型或表繼承,這取決於您的應用程序邏輯來定義哪個是最好的方法。 – petkostas
我不認爲你應該擔心表格,除非你直接進入數據庫。 Django具有非常好的ORM,ORM的主要方面是,您不必查看數據庫以及它如何存儲。只需創建一個漂亮的類層次結構來訪問所有項目和模型,並讓ORM決定需要多少表來保存它們。 –