我正在开发一个在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字段。关于如何完成这项工作的任何想法?谢谢。
答案 0 :(得分:0)
以某种方式反模式访问模型范围内的当前request
和当前request.user
。
基本上这些操作是在视图部分内完成的。 因此,最好从负责任的角度传递当前用户以节省投资或发票
答案 1 :(得分:0)
如果当前用户",你的意思是" request.user",那么你可以从线程本地获取请求对象,但它不被认为是一个好习惯
Why is using thread locals in Django bad?
django-threadlocals为此提供了帮助,并提供了有关它的更多信息。
过去它对我有用,但现在我不惜一切代价避免它,并坚持最佳做法并尽可能降低我的技术债务。