#31974: SplitDateTimeWidget and is_valid problem
-------------------------------------+-------------------------------------
               Reporter:  carson512  |          Owner:  nobody
                   Type:             |         Status:  new
  Uncategorized                      |
              Component:  Forms      |        Version:  3.0
               Severity:  Normal     |       Keywords:  SplitDateTimeWidget
           Triage Stage:             |      Has patch:  0
  Unreviewed                         |
    Needs documentation:  0          |    Needs tests:  0
Patch needs improvement:  0          |  Easy pickings:  0
                  UI/UX:  0          |
-------------------------------------+-------------------------------------
 this the models.py
 {{{
 class Rent_Car(models.Model):
     rent_time = models.DateTimeField( blank=False)
     car = models.ForeignKey(Cop_Car, on_delete=models.SET_NULL, null=True,
 blank=False)
     user = models.ForeignKey(Users, on_delete=models.SET_NULL, null=True,
 blank=False)
     car_rage = models.IntegerField(null=False, blank=False)
     rent_mark = models.CharField(max_length=300", null=True, blank=True)
 }}}
 this the forms.py
 {{{
 class RentcarForm(forms.ModelForm):
     class Meta:
         model = models.Rent_Car
         fields = '__all__'
         # model.rent_time =
 forms.DateTimeField(widget=forms.SplitDateTimeWidget)
         # initial = datetime.datetime.now()
         # model.rent_time = datetime.datetime.now()
         widgets = {
             'rent_time': forms.SplitDateTimeWidget(date_attrs={'class
 ':'form-control', 'type':'date'},time_attrs={'class':'form-control',
 'type':'time'},date_format='%Y-%m-%d'),
         }

     def __init__(self,*args,**kwargs):
         super().__init__(*args,**kwargs)
         for field_name,field in self.fields.items():
             field.widget.attrs.update({'class':'form-control'})
 }}}

 this is the views.py


 {{{

 def rentcar_add_edit(request, rid=None):

     rentcar_obj = models.Rent_Car.objects.filter(pk=rid).first()

     if request.method == 'GET':
         if rid:
             rentcar_form = RentcarForm(instance=rentcar_obj)
         else:
             rentcar_form = RentcarForm(initial={'rent_time':
 datetime.datetime.now(), 'user': request.user}, instance=rentcar_obj)
         return render(request, 'edit.html', {'rentcar_form':
 rentcar_form})

     else:
         rentcar_form = RentcarForm(request.POST, instance=rentcar_obj)
         if rentcar_form.is_valid():
             print(rentcar_form.errors)
             print(rentcar_form.cleaned_data)
             rentcar_form.save()
             messages.success(request,'ok!')
             return redirect('list')
         else:
             return render(request, 'edit.html', {'rentcar_form':
 rentcar_form})
 }}}

 when post the rent_time. show the error' 'list' object has no attribute
 'strip''

 the traceback below:

 {{{
 D:\Python\lib\site-packages\django\core\handlers\exception.py in inner
             response = get_response(request) …
 ▼ Local vars
 Variable        Value
 exc
 AttributeError("'list' object has no attribute 'strip'")
 get_response
 <bound method BaseHandler._get_response of
 <django.core.handlers.wsgi.WSGIHandler object at 0x000001BBE3C72EC8>>
 request
 <WSGIRequest: POST '/rentcar/add/'>
 D:\Python\lib\site-packages\django\core\handlers\base.py in _get_response
                 response = self.process_exception_by_middleware(e,
 request) …
 ▼ Local vars
 Variable        Value
 callback
 <function rentcar_add_edit at 0x000001BBE3B0A1F8>
 callback_args
 ()
 callback_kwargs
 {}
 middleware_method
 <bound method CsrfViewMiddleware.process_view of
 <django.middleware.csrf.CsrfViewMiddleware object at 0x000001BBE3CAC788>>
 request
 <WSGIRequest: POST '/rentcar/add/'>
 resolver
 <URLResolver 'carsoft.urls' (None:None) '^/'>
 resolver_match
 ResolverMatch(func=rentcar.views.rentcar_add_edit, args=(), kwargs={},
 url_name=add, app_names=[], namespaces=[], route=rentcar/add/)
 response
 None
 self
 <django.core.handlers.wsgi.WSGIHandler object at 0x000001BBE3C72EC8>
 wrapped_callback
 <function rentcar_add_edit at 0x000001BBE3B0A1F8>
 D:\Python\lib\site-packages\django\core\handlers\base.py in _get_response
                 response = wrapped_callback(request, *callback_args,
 **callback_kwargs) …
 ▼ Local vars
 Variable        Value
 callback
 <function rentcar_add_edit at 0x000001BBE3B0A1F8>
 callback_args
 ()
 callback_kwargs
 {}
 middleware_method
 <bound method CsrfViewMiddleware.process_view of
 <django.middleware.csrf.CsrfViewMiddleware object at 0x000001BBE3CAC788>>
 request
 <WSGIRequest: POST '/rentcar/add/'>
 resolver
 <URLResolver 'carsoft.urls' (None:None) '^/'>
 resolver_match
 ResolverMatch(func=rentcar.views.rentcar_add_edit, args=(), kwargs={},
 url_name=add, app_names=[], namespaces=[], route=rentcar/add/)
 response
 None
 self
 <django.core.handlers.wsgi.WSGIHandler object at 0x000001BBE3C72EC8>
 wrapped_callback
 <function rentcar_add_edit at 0x000001BBE3B0A1F8>
 D:\Python\lib\site-packages\django\contrib\auth\decorators.py in
 _wrapped_view
                 return view_func(request, *args, **kwargs) …
 ▼ Local vars
 Variable        Value
 args
 ()
 kwargs
 {}
 login_url
 None
 redirect_field_name
 'next'
 request
 <WSGIRequest: POST '/rentcar/add/'>
 test_func
 <function login_required.<locals>.<lambda> at 0x000001BBE3B0A0D8>
 view_func
 <function rentcar_add_edit at 0x000001BBE3AFACA8>
 D:\202008\carsoft\rentcar\views.py in rentcar_add_edit
         if rentcar_form.is_valid(): …
 ▼ Local vars
 Variable        Value
 rentcar_form
 <RentcarForm bound=True, valid=True,
 fields=(rent_time;car;user;car_rage;rent_mark)>
 rentcar_obj
 None
 request
 <WSGIRequest: POST '/rentcar/add/'>
 rid
 None
 D:\Python\lib\site-packages\django\forms\forms.py in is_valid
         return self.is_bound and not self.errors …
 ▼ Local vars
 Variable        Value
 self
 <RentcarForm bound=True, valid=True,
 fields=(rent_time;car;user;car_rage;rent_mark)>
 D:\Python\lib\site-packages\django\forms\forms.py in errors
             self.full_clean() …
 ▼ Local vars
 Variable        Value
 self
 <RentcarForm bound=True, valid=True,
 fields=(rent_time;car;user;car_rage;rent_mark)>
 D:\Python\lib\site-packages\django\forms\forms.py in full_clean
         self._clean_fields() …
 ▼ Local vars
 Variable        Value
 self
 <RentcarForm bound=True, valid=True,
 fields=(rent_time;car;user;car_rage;rent_mark)>
 D:\Python\lib\site-packages\django\forms\forms.py in _clean_fields
                     value = field.clean(value) …
 ▼ Local vars
 Variable        Value
 field
 <django.forms.fields.DateTimeField object at 0x000001BBE41AAC88>
 name
 'rent_time'
 self
 <RentcarForm bound=True, valid=True,
 fields=(rent_time;car;user;car_rage;rent_mark)>
 value
 ['2020-09-02', '11:17']
 D:\Python\lib\site-packages\django\forms\fields.py in clean
         value = self.to_python(value) …
 ▼ Local vars
 Variable        Value
 self
 <django.forms.fields.DateTimeField object at 0x000001BBE41AAC88>
 value
 ['2020-09-02', '11:17']
 D:\Python\lib\site-packages\django\forms\fields.py in to_python
         result = super().to_python(value) …
 ▼ Local vars
 Variable        Value
 __class__
 <class 'django.forms.fields.DateTimeField'>
 self
 <django.forms.fields.DateTimeField object at 0x000001BBE41AAC88>
 value
 ['2020-09-02', '11:17']
 D:\Python\lib\site-packages\django\forms\fields.py in to_python
         value = value.strip() …
 ▼ Local vars
 Variable        Value
 self
 <django.forms.fields.DateTimeField object at 0x000001BBE41AAC88>
 value
 ['2020-09-02', '11:17']
 }}}

 looks the widgets SplitDateTimeWidget return the datetime field with a
 list not a str.

-- 
Ticket URL: <https://code.djangoproject.com/ticket/31974>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-updates+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/052.18b14a266c41c7855b2b83c174d944ea%40djangoproject.com.

Reply via email to