首页 > 解决方案 > 没有主键的Django模型中的“更新”而不是“保存”

问题描述

如何进行“更新”而不是“保存”。只有当“姓名”、“年龄”已经不存在时,我才想创建一个新条目。我无法处理/传递主键。

class Author(models.Model):
    name = models.CharField(max_length=50)
    age = models.PositiveIntegerField(null=True, blank=True)
    alias = models.CharField(max_length=50, null=True, blank=True)
    goes_by = models.CharField(max_length=50, null=True, blank=True)
    flag = models.PositiveIntegerField()
    date = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.name
    
    objects = models.Manager()



def saveauthor(request):
    if request.method == "POST":
        nname = request.POST['name']
        nage = request.POST['age']
        nalias = request.POST['alias']
        ngoes_by = request.POST['goes_by']
        nflag = request.POST['flag']
        new = Author(name = nname, age = nage, alias = nalias, goes_by= ngoes_by, flag=nflag)
        new.save()    
     else:
        pass
    return JsonResponse("Ok", safe=False) 

标签: python-3.xdjangodjango-models

解决方案


您可以使用update_or_create方法:

defaults = { "alias": nalias, "goes_by": ngoes_by, "flag": nflag }
Author.objects.update_or_create(name = nname, age = nage, defaults = defaults)

有关更多信息,请参见此处:https ://docs.djangoproject.com/en/3.1/ref/models/querysets/#update-or-create


推荐阅读