在Django App的表单中获取已记录用户的名称,并将结果用作表单字段的输入

时间:2017-12-14 16:37:28

标签: django django-forms django-admin

我想在Django App的形式中获取已登录用户的名称,并将结果用作表单字段的输入。

我该怎么做?我的代码应该怎么办? 我尝试了所有的解决方案。

这是我的代码

Views.py

form = ProductForm()

Admin.py

class AccessLevelInline(admin.StackedInline):
    model = AccessLevel
    can_delete = False
    verbose_name_plural = 'accesslevel'

# Define a new User admin
class UserAdmin(BaseUserAdmin):
    inlines = (AccessLevelInline, )

# Re-register UserAdmin
admin.site.unregister(User)
admin.site.register(User, UserAdmin)

Form.py

user_name = HOW DO I ACCESS THE USER NAME HERE?
u = User.objects.get(username=user_name).accesslevel.prod.split(',')
v=(('---------','---------'),)
for l in u:
    v=v+((l.lstrip(),l.lstrip()),)

class ProductForm(forms.Form):
    model = Manufact    
    Prod = forms.ChoiceField(choices=v)

2 个答案:

答案 0 :(得分:0)

在您的视图中,您可以访问包含当前用户的request对象。你可以这样得到:request.user。因此,您可以在初始化时将其传递给表单,以便在需要时可以访问它。

form=ProductForm(request.user)

答案 1 :(得分:0)

它不会让我评论,因为我没有足够的声誉。

扩大Stepan的答案。

views.py

form=ProductFrom(request.user)

forms.py

# Declare __init__ function

def __init__(self, user_name):
    self.u = User.objects.get(username=user_name).accesslevel.prod.split(',')
    # DO the rest that you need here.