Получите имя зарегистрированного пользователя внутри формы приложения 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)