我已经看了这几天了,现在我要拔出我的头发,所以任何帮助将不胜感激。
我有一个名为package的简单模型,它有一个userFrom和userTo
class Package(models.Model):
title = models.CharField(max_length=50)
packageid = models.CharField(primary_key=True, max_length=64, default=uuid_str, editable=False)
userfrom = models.ForeignKey('auth.user', editable=False, related_name='userfrom')
userto = models.ForeignKey('auth.user', editable=False, related_name='userto')
我的包视图有以下内容来分配映射
def pre_save(self, obj):
print "adding user to object! %s "%self.request.user
obj.userfrom = self.request.user
然而,似乎pre_save没有被调用,用户id的映射也没有发生。当我使用api登录并尝试推送一个新包时,我会得到错误信息。
我试着把它尽可能地映射到教程http://django-rest-framework.org/tutorial/4-authentication-and-permissions.html中,没有任何运气。
异常类型:IntegrityError
异常值:
“userfrom_id”列中的空值违反了非空约束
浏览源代码到sql可以看到userfrom_id和usertou id都是空的。
任何想法都非常感谢。
J型
最佳答案
我也有同样的问题。。。
必须使用序列化对象调用post中的pre-save:
def post(self, request, format=None):
serializer = SnippetSerializer(data=request.DATA)
if serializer.is_valid():
self.pre_save(serializer.object) #pass in serializer.object
serializer.save()