2016-11-05 172 views
1

在我的Django項目中,我需要不斷訪問用戶的目標字符(模型),我應該在哪裏存儲此對象的值?因爲我將在多個視圖中使用它來顯示模板中的內容。我是否應該存儲在會話中,每次都從數據庫中檢索或其他替代方法?哪裏存儲對象信息django?

class Character(models.Model): 
    user = models.OneToOneField(User, on_delete=models.CASCADE,primary_key=True) 
    gold = models.IntegerField(default=gold) 
    points = models.IntegerField(default = startPoints) 
+0

爲什麼不使用緩存?,它似乎更適合您的情況。 – trinchet

回答

0

不知道究竟是什麼意思character,但: 如果不是基於會話的,但永久性的信息(我認爲這是)你需要將其存儲在數據庫中,以便能夠把它拿來當用戶登錄時,如何存儲它並不重要 - 如果需要它可以是專用表(在這種情況下,將用戶添加爲FK)或者它可以是User表中的字段。

然後,如果你有會話中間件和認證中間件,你將能夠從請求對象訪問user對象,所以你需要做的是: request.user.character

我希望這是有幫助的。

UPD:在數據庫或緩存系統中的請求之間存儲數據的唯一方法(如果您有非數據庫緩存,或者您不會將會話存儲在數據庫中,而是以更快的方式存儲 - 例如Redis或Memcache)。我害怕這是唯一的方法。

對於每會話數據,您可以在某些情況下使用cookie,但我認爲情況並非如此。

+0

這是一個檢索模型的值的問題,我不想每次都進入數據庫,因爲這個值經常被使用,它的實現方式我無法通過request.user.character –

+0

來訪問它,如果你已經啓用了'auth'和'session'中間件,那麼它就是一個模型中的字段,所以它不會向DB添加更多的請求。 –

+0

@VictorFerreira我也更新了我的答案,請檢查 –