簡體   English   中英

獲取模型中的當前用戶

[英]Get Current User in Models

我正在開發一個在models.py中具有投資和發票類的項目。 他們的工作方式是用戶進行投資,並在保存投資模型的同時創建發票。 以下是相關代碼:

class Investment(models.Model):
   ...
   def save(self, *args, **kwargs):
            current_investment = Investment.objects.get(pk=self.pk)
            create_invoice = Invoice.objects.create(investment=current_investment, 
                                                    fee_type='Mngmt.', 
                                                    amount=self.amount*fee_amount)

class Invoice(models.Model):
    user = models.ForeignKey(User) 
    investment = models.ForeignKey(Investment)
    fee_type = models.CharField(max_length=24)
    amount = models.DecimalField(max_digits=12, decimal_places=2, default=0)
    date = models.DateTimeField(default=timezone.now, blank=True)

    def __str__(self):
        return self.investment.fund.name    

因此,基本上,當保存投資類時,會創建一個發票對象,但是我想獲取當前用戶並將其設置為發票類中的用戶字段。 關於如何完成這項工作的任何想法? 謝謝。

在模型范圍內以某種方式訪問​​當前request和當前request.user的反模式。

MVC架構模式

基本上,這些操作是在視圖部分中完成的。 因此,最好以負責任的態度來傳遞當前用戶,以節省投資或發票

如果“當前用戶”的意思是“ request.user”,則可以從線程本地獲取請求對象,但這不是一個好習慣。

為什么在Django中使用線程本地變量不好?

django-threadlocals為此提供了一個幫助器,並提供了有關它的更多信息。

過去,它對我有用,但如今,我會不惜一切代價避免使用它,並堅持最佳實踐,並盡可能降低我的技術債務。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM