Django - 当我不在视图函数中时我可以获取当前用户吗

Django - can I get the current user when I'm not in a view function

我有 Company 和 CompanyUser 模型。 CompanyUser 与 django 的 auth User 模型有 1:1 关系。每个用户都是某个公司的一部分,所以我在 CompanyUser 模型中有一个外键字段(公司):

class CompanyUser(models.Model):
    Company = models.ForeignKey(Company)
    User = models.OneToOneField(User)

现在我想创建一些 html 表来查看和过滤有关销售、产品等的数据。我正在使用 django-tables2,效果很好。

现在假设我想查看特定产品的销售额。所以我需要一个包含用户所属公司的所有产品的下拉列表。

我已经在我的应用程序中创建了 forms.py 文件:

from django import forms

class SaleFilterForm(forms.Form):
    product_id = forms.ChoiceField(queryset=Product.objects.all(Company=???))
    ...
    ...

所以我的问题是。当我在 forms.py 文件中时,如何获取当前用户?我那里没有 "request" 对象..

Views.py

def yourview(request):
    yourform = SaleFilterForm(request.POST, user=request.user)

Forms.py

class SaleFilterForm(forms.Form):
    ...

    def __init__(self, *args, **kwargs):
        self.user = kwargs.pop('user', None)
        super(SaleFilterForm, self).__init__(*args, **kwargs)

然后您可以在表单中使用您的用户 self.user

希望对您有所帮助!

这是 Django 中将用户信息表单 views.py 传递到各种文件的最佳简单代码,方法是使用一个函数

在文件中,您想访问当前用户信息(例如:models.py): 在所有进口之后

`

user = None
def current_user(request):
    global user
    user = request.user

`

并在文件

中使用对象变量user

在views.py:

from .models import current_user

在任何函数中(例如-def login(request):)

current_user(request)

它只是基于通过函数简单发送变量。简单的逻辑