【发布时间】:2015-07-06 15:22:04
【问题描述】:
我正在尝试通过定期更新的 CSV 更新大量模型。现在,CSV 的初始上传就像一个魅力,所有模型都正确写入数据库。但是,当我在创建模型后尝试更新模型时,我的 serializer.is_valid() 返回错误 ReturnDict([('inventory_number', [u'This field must be unique.'])])。
因此我的问题是:如何更新已通过序列化程序创建的模型?
models.py:
class MyModel(models.Model):
inventory_number = models.IntegerField(primary_key=True)
location = models.CharField(max_length=40, blank=True)
views.py:
file_obj = request.data['file']
lines = csv.reader(file_obj, delimiter=",")
for line in lines:
data = {
'inventory_number': line[0],
'location': line[1]
}
serializer = self.serializer_class(data=data)
if serializer.is_valid():
MyModel.objects.save_model(**serializer.validated_data)
else:
print serializer.errors
最后,我对 Django 和 Django-Rest-Framework 还比较陌生,因此对于使用序列化程序的任何见解/技巧都值得赞赏。感谢您的宝贵时间。
【问题讨论】:
-
您正在尝试使用此代码创建新对象。您需要
some_obj = MyModel.objects.get(line[0])然后修改值并保存。
标签: python django csv django-rest-framework