获取模型中的当前用户

时间:2016-01-01 21:27:22

标签: python django django-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    

所以基本上在保存投资类时会创建一个Invoice对象,但我想获取当前用户并将其设置为Invoice类中的user字段。关于如何完成这项工作的任何想法?谢谢。

2 个答案:

答案 0 :(得分:0)

以某种方式反模式访问模型范围内的当前request和当前request.user

MVC Architectural Pattern

基本上这些操作是在视图部分内完成的。 因此,最好从负责任的角度传递当前用户以节省投资或发票

答案 1 :(得分:0)

如果当前用户",你的意思是" request.user",那么你可以从线程本地获取请求对象,但它不被认为是一个好习惯

Why is using thread locals in Django bad?

django-threadlocals为此提供了帮助,并提供了有关它的更多信息。

过去它对我有用,但现在我不惜一切代价避免它,并坚持最佳做法并尽可能降低我的技术债务。