我excludes
在 ModelResource 的 Meta 类中遇到了属性问题。
我为用户创建了 ModelResource。
class UserResource(ModelResource):
class Meta:
serializer = Serializer(formats=['json'])
queryset = User.objects.all()
excludes = ['password', 'is_active', 'is_staff', 'is_superuser']
resource_name = 'user'
always_return_data = True
authentication = ApiKeyAuthentication()
authorization = UserAuthorization()
它与doc中的那个非常相似。
我发送PUT
更新username
:
{"username": "bara", "first_name": "bara", "last_name": "", "email": "bara@example.com", "last_login": "2013-10-09T15:32:55.056235","id": 7, "date_joined": "2013-10-09T15:32:55.056235"}
一切都很完美。
但是我不想直接使用这个资源我想使用这个。
class ProfileResource(ModelResource):
user = fields.ToOneField(UserResource, 'user', full=True)
class Meta:
serializer = Serializer(formats=['json'])
queryset = Profile.objects.all()
resource_name = 'profile'
excludes = ['created', 'modified']
always_return_data = True
authentication = ApiKeyAuthentication()
authorization = ProfileAuthorization()
...
我发送PUT
更新username
:
{ "user": {"username": "barabara", "first_name": "bara", "last_name": "", "email": "bara@example.com", "last_login": "2013-10-09T15:32:55.056235", "id": 7, "date_joined": "2013-10-09T15:32:55.056235"}, "gender": 0, "birth_date": null}
它似乎运作良好,但事实并非如此。在第二种情况下,密码以某种方式被覆盖。我ValueError: Unknown password hashing algorithm.
在管理面板中看到:
我试图excludes
在 ProfileResource 的 Meta中设置user__password
,password
但似乎无济于事。
附加信息:
- 用户和个人资料是一一对应的。
- Python 2.7、Django 1.4.3、Tastypie 0.9.12
编辑:
我很抱歉造成混淆,但这仅在username
更新期间发生。用户的所有其余字段都可以正常工作。