django.db.utils.IntegrityError:在列空值 - 但值不为空
问题描述:
我使用Django的REST框架和我的serialiazers.py
django.db.utils.IntegrityError:在列空值 - 但值不为空
class MeetingSerializer(serializers.ModelSerializer):
meeting_organiser = serializers.HiddenField(default=serializers.CurrentUserDefault())
class Meta:
model = Meeting
fields = '__all__'
我models.py
的Meeting
模式是这样的:
class Meeting(models.Model):
[some fields here...]
meeting_organiser = models.ForeignKey(User, default=1)
[more fields here...]
然而,当我尝试做一个save()
到Meeting
模型我得到这个错误:
django.db.utils.IntegrityError: null value in column "meeting_organiser" violates not-null constraint
我试图调试,并在serializers.py
补充说:
def save(self):
print(self.validated_data)
和models.py
:
def save(self, *args, **kwargs):
print(self.meeting_organiser.username)
在这两种情况下,会议组织者的目的不为空,它包含正确的价值观。
答
您需要添加权限,如IsAuthenticated
以确保该请求被验证。
否则,你会得到一个AnonymousUser
,这将转化为None
,我假设由于该参数是明确给出的,所以该模型的默认值不适用。
+0
在我的设置,我已'REST_FRAMEWORK = { “DEFAULT_PERMISSION_CLASSES”:( “rest_framework.permissions.IsAuthenticated”, ) } '我已经测试过,如果我没有验证我无法访问API。此外,在'models.py'中,'print(self.meeting_organiser.username)'返回右值(非空值)。 – Galil
在什么地方'User'在'Meeting'使用来自哪里? – Linovia
@Linovia,道歉!我没有在我的问题中加入这个。它来自标准的django用户模型,并导入如:''from django.contrib.auth.models import User''。 – Galil
只是一个想法,尝试在外键中设置'null = True'。 – bhansa