Reputation: 99
I am trying to submit a username as default value for a model form but after submitting the value field turns blank after submit. Hence the form doesn't validate.
This is my form:
class WeeklyForm(ModelForm):
class Meta:
model = wreport
fields = [ 'tname' ,'classes', 'fdate', 'tdate', 'objective', 'tplan', 'how', 'material', 'extra']
required = False
widgets = {
'tname' : TextInput(attrs= {'class' : 'form-control', 'disabled' : True}),
'classes' : Select(attrs= {'class' : 'form-control'}),
'fdate' : DateInput(attrs= {'class' : 'form-control'}),
'tdate' : DateInput(attrs= {'class' : 'form-control'}),
'objective' : Textarea(attrs= {'class' : 'form-control'}),
'tplan' : Textarea(attrs= {'class' : 'form-control'}),
'how' : Textarea(attrs= {'class' : 'form-control'}),
'material' : Textarea(attrs= {'class' : 'form-control'}),
'extra' : Textarea(attrs= {'class' : 'form-control'}),
}
This is my view:
@login_required(login_url='login')
def weekly(request):
context = ''
weekly_form = WeeklyForm()
daily_form = DailyForm()
if request.method == 'POST' and 'weekly' in request.POST:
initial = {'tname' : request.user.username}
form = WeeklyForm(request.POST or None, initial = initial)
# print(form['tname'])
if form.is_valid():
# print(form)
# form.save(commit=False)
# form.tname = request.user.username
form.save()
# print(form.tname)
messages.success(request, "Your report was submitted Successfully.")
else:
messages.error(request, form.errors)
# print(form.errors)
else:
initial = {'tname' : request.user.username}
weekly_form = WeeklyForm(initial = initial)
I have tried sending value from form via kwargs but that doesn't help either. I have also tried making username default value for database which doesn't work as well. The tname should be a value auto generated from username. Any suggestions to resolve would be nice.
Upvotes: 1
Views: 144
Reputation: 507
Try:
if form.is_valid():
my_form = form.save(commit=False)
my_form.tname = request.user.username
my_form.save()
Upvotes: 1