Reputation:
views.py
def when(request):
user = request.user
try:
report = Report.objects.get(user=user.id)
except:
report = None
settings = Settings.objects.get(user=request.user)
settingsForm = SettingsForm(instance=settings)
if settings.date_format == '0':
date = report.manual_date.strftime('%d/%m/%Y')
else:
date = report.manual_date.strftime('%m/%d/%Y')
reportform = ReportForm(instance=report)
if request.method == 'POST':
reportform = ReportForm(request.POST,instance=report)
if reportform.is_valid():
report = reportform.save(commit=False)
report.user = request.user
report.save()
return redirect('/member/media/')
reportform = ReportForm(instance=report,initial={'manual_date':date})
The above code is used to convert and show the date format.Initially,i hard coded the value in database and checked about format change.Now,for 1st time,for new record in database,it is giving this error "'NoneType' object has no attribute 'strftime'
"
I don't know how to logically handle this.Need your help.
Thanks
Upvotes: 2
Views: 20235
Reputation: 99620
You would have to handle the check for both report
and report.manual_date
for None
Try this:
def when(request):
user = request.user
date = None
try:
report = Report.objects.get(user=user)
except:
report = None
settings = Settings.objects.get(user=user)
settingsForm = SettingsForm(instance=settings)
reportform = ReportForm()
if report and report.manual_date:
if settings.date_format == '0':
date = report.manual_date.strftime('%d/%m/%Y')
else:
date = report.manual_date.strftime('%m/%d/%Y')
reportform = ReportForm(instance=report)
if request.method == 'POST':
reportform = ReportForm(request.POST)
if report:
reportform = ReportForm(request.POST,instance=report)
if reportform.is_valid():
report = reportform.save(commit=False)
report.user = request.user
report.save()
return redirect('/member/media/')
reportform = ReportForm(instance=report,initial={'manual_date':date})
Upvotes: 0
Reputation: 2027
Try using the get_object_or_404()
function:
def when(request):
user = request.user
report = get_object_or_404(Report, user=user) #no need to use the id
settings = get_object_or_404(Settings, user=user)
settingsForm = SettingsForm(instance=settings)
if settings.date_format == '0':
date = report.manual_date.strftime('%d/%m/%Y')
else:
date = report.manual_date.strftime('%m/%d/%Y')
reportform = ReportForm(instance=report)
if request.method == 'POST':
reportform = ReportForm(request.POST,instance=report)
if reportform.is_valid():
report = reportform.save(commit=False)
report.user = request.user
report.save()
return redirect('/member/media/')
reportform = ReportForm(instance=report,initial={'manual_date':date})
Upvotes: 0
Reputation: 48599
I don't know how to logically handle this
manual_date = report.manual_date
if (manual_date):
format = (settings.date_format == "0") ? '%d/%m/%Y' : '%m/%d/%Y'
date = manual_date.strftime(format)
else:
#No report.manual_date
Upvotes: 1