我正在尝试更新或创建以下模型:
class Profile(models.Model):
user = models.OneToOneField(AUTH_USER_MODEL, on_delete=models.CASCADE)
canMakeEvent = models.BooleanField(default=False)
使用序列化程序:
class ProfileSerializer(serializers.ModelSerializer):
class Meta:
model = Profile
fields = '__all__'
并查看:
def post(self, request):
answer, created = Profile.objects.update_or_create(
user=request.user, canMakeEvent = request.data['canMakeEvent'])
return Response()
我理解响应不正确但是update_or_create的代码主要是我担心的。控制台输出以下内容:
UNIQUE约束失败:event_profile.user_id
答案 0 :(得分:0)
您需要添加defaults
参数才能仅通过user_id执行搜索,而不是通过(user_id,canMakeEdit)的组合执行搜索:
answer, created = Profile.objects.update_or_create(
user=request.user, defaults={'canMakeEvent': request.data['canMakeEvent']})
这将允许更新所选用户的现有配置文件(如果存在),否则创建新用户。