Получите имя зарегистрированного пользователя внутри формы приложения Django и используйте результаты в качестве ввода поля формы

Я хотел бы получить имя зарегистрированного пользователя внутри формы приложения Django и использовать результаты в качестве ввода поля формы.

Как я могу это сделать? Что мне делать в моем коде? Я попробовал все решения.

Вот мой код

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 ответа

Решение

Это не позволит мне комментировать, так как мне не хватает репутации.

Расширение от ответа Степана.

В 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. 

По вашему мнению, у вас есть доступ к request объект с текущим пользователем. Вы можете получить это так: request.user, Таким образом, вы можете передать это в свою форму, когда вы инициализируете ее, чтобы иметь доступ к тому, когда вам это нужно.

form=ProductForm(request.user)

Другие вопросы по тегам