我需要創建一個模型以包含與兩個獨立模型相關的一組數據,並且這兩個模型的組合是唯一的。包含與Django中的兩個模型相關的信息
例如,假設我有一個用戶Profile
模型和一個Dessert
模型。 Profile
模型包含用戶的偏好和個人信息,Dessert
模型包含有關甜點(卡路里,成本,類型等)的信息。我現在想創建一個模型,讓用戶記錄給定甜點的「味覺測試」結果。每個用戶都可以對每個甜點進行味道測試,但只有一個(即,每個用戶/甜點組合的味道測試是唯一的)。
我該如何做到這一點? through
(如此處所述:How do you bind a model to two other, already related models, and display the information?)似乎並不合適,因爲大部分時間我都想在沒有味覺測試的情況下訪問甜點或用戶的個人資料(例如,顯示有關甜點的信息並將其與其他信息進行比較甜點)。 through
會增加很多不必要的開銷。
我能拿出最好的解決方案是創建一個「TasteTest」模式,像這樣:
class TasteTest(models.Model):
user_profile = models.ForeignKey(Profile)
dessert = models.ForeignKey(Dessert)
# Taste test results here
我有兩個相關的問題。首先,這是做這件事的最好的/正確的方法嗎?或者,還有更好的方法?其次,查找時涉及的數據庫開銷是多少?要訪問口味測試給定用戶在給定的甜點好像我必須這樣做:
user.profile.tastetest_set.get(dessert=given_dessert.pk)`
這似乎是它可以是一個昂貴的查找(雖然我與DB真的不熟東西,這就是爲什麼我問)。
我個人從未發現沙子特別好吃。其他人可能會不同意,但... –
@ IgnacioVazquez-Abrams你顯然從來沒有嘗過萬寶龍撒哈拉選擇'84那麼。呃......這是漫長的一天,謝謝。 –