我已经看了这几天了,现在我要拔出我的头发,所以任何帮助将不胜感激。
我有一个名为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()

10-05 22:10