简体   繁体   English

Django REST框架:serializers_user_data.owner_id处的IntegrityError不能为NULL

[英]Django REST framework : IntegrityError at serializers_user_data.owner_id may not be NULL

I am following django REST framework tutorial of Authentication & Permissions. 我正在遵循django REST框架的Authentication&Permissions教程。 As per tutorial i defined models and views buy i am getting the error below: 根据教程,我定义了模型和视图,但出现以下错误:

IntegrityError at serializers_user_data.owner_id may not be NULL

Here is my code: 这是我的代码:

models.py models.py

class User_Data(models.Model):
    owner = models.ForeignKey('auth.User', related_name='user_datas')    
    user_name = models.CharField(max_length = 100, blank = True)
    user_email = models.CharField(max_length = 100, blank = True)
    user_city = models.CharField(max_length = 50, blank = True)

    class Meta:
        ordering = ['user_name']

    def __unicode__(self):
        return self.user_name

view.py view.py

class User_Mixing():
    queryset = User_Data.objects.all()
    serializer_class = User_Data_Serializers
    permission_classes = (IsOwnerOrReadOnly,)

    def pre_save(self, obj):
        obj.owner = self.request.user
        print obj.owner

class User_list(User_Mixing, generics.ListCreateAPIView):
    pass

class User_detail(User_Mixing, generics.RetrieveUpdateDestroyAPIView):
    pass

Also help me with related_names in foreign key. 还可以通过外键中的related_names帮助我。 For what purpose it is used?? 它用于什么目的?

I used perform_create method instead of pre_save 我使用perform_create方法而不是pre_save

def perform_create(self, serializer):
    serializer.save(owner=self.request.user)

Set ipdb in your code 在代码中设置ipdb

    def pre_save(self, obj):
    import ipdb; ipdb.set_trace()
    obj.owner = self.request.user
    print obj.owner

And check the request.user attribute to understand the error. 并检查request.user属性以了解错误。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM