Cra*_*ion 7 python django rest frameworks django-rest-framework
我希望能够通过POST更新用户记录.但是,id始终为NULL.即使我通过id,它似乎也被忽略了
查看代码:
JSON张贴:
{
"id": 1,
"name": "Craig Champion",
"profession": "Developer",
"email": "craig@isai.co.uk"
}
@api_view(['POST'])
def get_purchase(request):
"""
Gets purchase records for a user
Purchase collection is returned
"""
user = User();
serializer = UserSerializer(user, data=request.DATA)
if serializer.is_valid():
#The object ALWAYS has ID = nothing at this point
serializer.save()
return Response(serializer.data, status=status.HTTP_200_OK)
else:
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Run Code Online (Sandbox Code Playgroud)
ModelSerializer
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('id', 'name', 'profession', 'email', 'password', )
write_only_fields = ('password' , )
Run Code Online (Sandbox Code Playgroud)
模型
class User(models.Model):
name = models.CharField(max_length=30, null=True, blank=True)
profession = models.CharField(max_length=100, null=True, blank=True)
email = models.EmailField()
password = models.CharField(max_length=20, null=True, blank=True)
def __unicode__(self):
return self.name
Run Code Online (Sandbox Code Playgroud)
如何强制savechanges更新并查看ID?
Ash*_*ary 12
您需要使用partial=True更新包含部分数据的行:
serializer = UserSerializer(user, data=request.DATA, partial=True)
Run Code Online (Sandbox Code Playgroud)
来自docs:
默认情况下,必须为所有必需字段传递序列化程序的值,否则它们将抛出验证错误.您可以使用该
partial参数以允许部分更新.
| 归档时间: |
|
| 查看次数: |
6119 次 |
| 最近记录: |