Próbuję serializacji instancji (dostosowany) Django model użytkownika tak:Django serializer AttributeError: 'unicode' obiekt ma atrybut 'isoformat'
W models.py:
Class Employee(User):
company = models.ForeignKey('Company')
additionalField1
additionalField2
etc....
w modelu wyżej dla pracowników, oprócz cech odziedziczone modelu użytkownika, to stosować następujące rodzaje modelu pola: Charfield() NullBooleanField() IntegerField() DateField() DecimalField()
Kod w pytaniu:
employee = Employee()
(snip large amounts of code that sets various attributes for employee)
serializers.serialize("json", [employee, ])
(mam zainstalowane Django plugin pełne serializer WadOfStuff za, przy okazji, w przypadku, gdy liczy - ale w tym przypadku uważam, że powinniśmy być zalegających ze standardowym Django serializatora bo nie używam żadnego z pełną serializer użytkownika funkcjonalność w tym przypadku)
__dict__ pracownik (z kilku kluczowych dziedzinach anonimowych) tuż przed serializacji próby:
{'status': u'Act', 'last_name': u'Doe', 'payFrequency': u'Mo', '_state':
<django.db.models.base.ModelState object at 0x15be890>, 'sex': u'M', 'user_ptr_id':
None, 'is_staff': False, 'isRegistered': False, 'hireDate': u'2012-08-01', 'id': None,
'date_joined': datetime.datetime(2012, 10, 25, 2, 39, 22, 793015, tzinfo=<UTC>),
'city': u'San Francisco', 'first_name': u'John', 'zip': u'94114', u'employmentType':
u'FT', 'company_id': 4, 'compType': u'S', 'is_superuser': False, 'state': u'CA',
'last_login': datetime.datetime(2012, 10, 25, 2, 39, 22, 792983, tzinfo=<UTC>),
'email': '', 'username': 'tu7wwhyskewcpheyoq4lk3i3l', 'address2': '', 'is_active':
True, 'phone': '', 'address': u'111 Cherry Lane', 'password':
'pbkdf2_sha256$10000$OAlOtfQClAV2$OC9oCe/9P5hjc4nWd1ZW6cY117PmW1pny8J41axr6mM=',
'salary': u'10833.00', 'standardHours': None, 'dob': u'1980-04-01', 'socialSecurity':
u'555555555', 'middleInitial': '', 'payRate': None}
Częściowa traceback:
File "/usr/lib/python2.6/site-packages/django/core/serializers/__init__.py", l ine 98, in serialize
s.serialize(queryset, **options)
File "/usr/lib/python2.6/site-packages/wadofstuff/django/serializers/base.py", line 52, in serialize
self.handle_field(obj, field)
File "/usr/lib/python2.6/site-packages/wadofstuff/django/serializers/python.py ", line 71, in handle_field
self._fields[field.name] = field.value_to_string(obj)
File "/usr/lib/python2.6/site-packages/django/db/models/fields/__init__.py", l ine 722, in value_to_string
return '' if val is None else val.isoformat()
AttributeError: 'unicode' object has no attribute 'isoformat'
Jakieś pomysły, które mogą być przyczyną błędu lub w jaki sposób mogę przeprowadzić serializację w tym przypadku? Przypuszczalnie jest pewien atrybut, którego Serializator nie lubi - w jaki sposób mogę się dowiedzieć, który?
Dzięki, właśnie to się stało.Zarówno hireDate, jak i dob miały być obiektami datetime.date i były faktycznie łańcuchami. Co dziwne, funkcja save() działała bez zarzutu - jestem zaskoczona, że mogę zapisać ciąg znaków w bazie danych dla tych pól. – CQP
Jak to naprawić? – Newtt