我想序列化(定製)的Django用戶模型的實例,像這樣:Django的串行AttributeError的: '統一' 對象有沒有屬性 'isoformat'
在models.py:
Class Employee(User):
company = models.ForeignKey('Company')
additionalField1
additionalField2
etc....
在上面的僱員模型,除了屬性從用戶模型繼承的,我使用下面的模型字段類型:CharField(),NullBooleanField(),IntegerField(),的DateField(),DecimalField()
有問題的代碼:
employee = Employee()
(snip large amounts of code that sets various attributes for employee)
serializers.serialize("json", [employee, ])
(我已經安裝了WadOfStuff的Django的全序列器外掛,順便說一句,如果是重要的 - 但在這種情況下,我相信應該是因爲我沒有使用任何完整的串行器來默認爲標準的Django串行在這種情況下功能)
員工__dict__(用匿名的幾個關鍵領域)序列化是正確的嘗試之前:
{'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}
部分回溯:
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'
任何想法可能會導致錯誤或我可以如何在這種情況下序列化工作?據推測,串行器不喜歡某種屬性 - 我怎麼才能找出哪一個?
謝謝,這正是發生了什麼事情。hireDate和dob都應該是datetime.date對象,實際上是字符串。奇怪的是,save()運行得很好 - 我很驚訝它讓我爲這些字段保存一個字符串到數據庫。 – CQP
你如何解決這個問題? – Newtt