我想通过使用graphene-django将旧图像更改为新图像。
在我的数据库中,有一张ID为1的图片。 我要更改图片,这意味着我要制作一张ID为1的新图片。
这是我的突变:
class ImageAndSelfMutation(graphene.Mutation):
class Arguments:
image = Upload()
Output = types.EditProfileResponse
def mutate(self, info, image, **kwargs):
user = info.context.user
ok = True
error = None
if user.is_authenticated is not None:
try:
first_image = models.Photo.objects.get(owner=user, order="first")
create_image = models.Photo.objects.create(image=image[0], owner=user)
serializer = serializers.ImageSerializer(first_image, data=create_image)
if serializer.is_valid():
serializer.save(owner=user)
return types.EditProfileResponse(ok=ok, error=error)
else:
error = '로그인이 필요합니다.'
return types.EditProfileResponse(ok=not ok, error=error)
此代码生成ID为2的一些新数据,但我不想生成新数据。我想更改1图片的ID。 有人可以帮我吗?
答案 0 :(得分:0)
更改实例ID是个坏主意。新的id值应在数据库中按顺序生成。无需更改ID,您可以使用新图像复制以前的实例,然后删除以前的实例:
previous_id = first_image.id
first_image.id = None
first_image.image = image[0]
first_image.save()
models.Photo.objects.filter(id=previous_id).delete()