is there a better way to get the user object from the code below in forms.py?
models
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
...
forms.py
class FooForm(forms.Form):
def __init__(self, *args, **kwargs):
self.request = kwargs.pop("user")
super(ExperienceStart, self).__init__(*args, **kwargs)
self.helper = FormHelper()
self.helper.form_method = 'post'
self.helper.layout = Layout(InlineRadios('topics'),)
hardcoded_username = "johndoe" # i want to find a way not to hardcode this
current_user = User.objects.filter(username=hardcoded_username).first()
profile = Profile.objects.filter(user=current_user).first()
...
profile_values = list(zip(profile, profile))
profile = forms.TypedChoiceField(
label="Select a Profile",
choices=profile_values,
coerce=str,
widget=forms.RadioSelect,
initial=profile[0],
required=True)
views.py
def foo(request):
form = fooForm(request.POST, user=request.user)
print(form.request) # i have already tried this but i want to get it in form not views
if request.method == "POST":
if form.is_valid():
# do something
else:
form = fooForm(user=request.user)
context = {"form": form}
I am trying to find a way not to hardcode the username in forms.py and get the current logged in user.