Python django.db.utils.IntegrityError:列中的值为null-但值不为null
我正在使用Django Rest框架和我的Python django.db.utils.IntegrityError:列中的值为null-但值不为null,python,django,django-models,django-rest-framework,Python,Django,Django Models,Django Rest Framework,我正在使用Django Rest框架和我的serialiazers.py class MeetingSerializer(serializers.ModelSerializer): meeting_organiser = serializers.HiddenField(default=serializers.CurrentUserDefault()) class Meta: model = Meeting fields = '__all__'
serialiazers.py
class MeetingSerializer(serializers.ModelSerializer):
meeting_organiser = serializers.HiddenField(default=serializers.CurrentUserDefault())
class Meta:
model = Meeting
fields = '__all__'
mymodels.py中的Meeting
模型如下:
class Meeting(models.Model):
[some fields here...]
meeting_organiser = models.ForeignKey(User, default=1)
[more fields here...]
但是,当我尝试将save()
保存到会议
模型时,我得到以下错误:
django.db.utils.IntegrityError: null value in column "meeting_organiser" violates not-null constraint
我试图调试并添加到序列化程序.py
:
def save(self):
print(self.validated_data)
def save(self, *args, **kwargs):
print(self.meeting_organiser.username)
在models.py中
:
def save(self):
print(self.validated_data)
def save(self, *args, **kwargs):
print(self.meeting_organiser.username)
在这两种情况下,meeting Organizer对象均不为null,并且包含正确的值。您需要添加权限,以确保请求经过身份验证
否则,您将得到一个匿名用户
,它将转换为无
,并且我假设由于明确给出了此参数,模型的默认值不适用。在会议
中使用的用户
来自哪里?@Linovia,抱歉!我没有在问题中补充这一点。它来自标准的django用户模型,并像这样导入:来自django.contrib.auth.models import User
。只是一个想法,试着在外键中设置null=True
。@Bhansa,我设置了null=True
,然后迁移了,但仍然得到相同的错误。然后我删除了迁移,再次迁移,但仍然得到相同的错误。在我的设置中,我设置了REST\u FRAMEWORK={'DEFAULT\u PERMISSION\u CLASSES':('REST\u FRAMEWORK.permissions.IsAuthenticated',)}
,并且我已经测试过,如果我没有经过身份验证,我将无法访问API。此外,在models.py
中,print(self.meeting\u organizer.username)
返回正确的(非空)值。