【问题标题】:Django RF update_or_createDjango RF update_or_create
【发布时间】:2018-01-27 12:25:21
【问题描述】:

我正在尝试更新或创建以下模型:

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

【问题讨论】:

    标签: django rest django-rest-framework


    【解决方案1】:

    您需要添加defaults 参数才能仅通过 user_id 而不是通过 (user_id, canMakeEdit) 的组合执行搜索:

    answer, created = Profile.objects.update_or_create(
    user=request.user, defaults={'canMakeEvent': request.data['canMakeEvent']})
    

    这将允许更新所选用户的现有配置文件(如果存在)或创建新配置文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-11-27
      • 2021-05-09
      • 2018-10-03
      • 2018-10-11
      • 2018-08-15
      • 2021-02-16
      • 1970-01-01
      相关资源
      最近更新 更多