如何在不指定整个字段的情况下更新Django中的部分记录?

2024-10-01 09:26:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用save()方法在Django中创建记录。使用相同的save()方法和主键来更新相应的记录。但是每次我不能指定更新中所有字段的值。这是删除已经存在的数据,我在创建过程中添加了这些数据。那么,通过只指定必需字段来执行部分更新的最佳方法是什么。?

型号

class ApprenticeUsers(models.Model):

   uid = models.IntegerField(primary_key = True)
   apid = models.CharField(max_length=60, blank=False)
   first_name = models.CharField(max_length=64, blank=False)
   last_name = models.CharField(max_length=64, blank=False)

观点

^{pr2}$

传递到视图的示例数据

({uid:123, apid:"AP12"}, ApprenticeUsers)

这里uid是主键


Tags: 数据方法namefalseuidmodelssave记录
2条回答

model.save()方法有一个参数update_fields,您还可以指定保存时更新哪些字段。见https://docs.djangoproject.com/en/1.11/ref/models/instances/#specifying-which-fields-to-save

通常的模式是从数据库中检索项目,更新相关字段,然后将其保存回。你错过了第一步,每次都在构建一个新项目。在

请注意,实现您想要的效果的一个更好的方法是使用ModelForm;除了更新之外,它还将负责验证数据是否是应该的。或者,如果这是一个API,您可以使用django rest框架编写一个序列化程序来执行相同的操作。在

相关问题 更多 >