由于某种原因,需要有一个数据库表,其中包含要更新的字段。这些字段为attempt
,success
和failure
。我认为使用Django ORM会更好,但这需要成为......
问题是,我得到一个包含数据的数组数组,我需要解析。当数据库中没有该字段的条目时,我该怎么办?
class SomeData(models.Model):
attempt = models.PositiveIntegerField(null=True)
success = models.PositiveIntegerField(null=True)
failure = models.PositiveIntegerField(null=True)
class PutSomeData(CreateOrUpdateAPIView):
model = OtherModel
def post(self, *args, **kwargs):
data = self.request.data
for k in data:
entry = OtherModel(
field1=k[0],
field2=k[1],
field3=k[2]
)
entry.save()
count = SomeData.objects.all()
if not count:
attempt, success, failure = 0, 0, 0
data = SomeData(
attempt=attempt,
success=success,
failure=failure
)
data.save()
else:
data = SomeData.objects.last()
if 'attempt' in k[2]:
data.attempt + 1
elif 'success' in k[2]:
data.success + 1
else:
data.failure + 1
data.save()
我现在正在考虑这样的事情,但这当然是一件愚蠢的事情,除此之外,它总会跳过数组中的第一个并因此是不准确的。这只是我现在所拥有的,但我不知道如何让这更好,更优雅。有什么想法吗?
编辑:更清楚一点:问题是现在没有初始字段,否则我可以像我一样增加字段,但现在我必须查看是否已有条目(它将否则抱怨NoneType没有“尝试过”(
)答案 0 :(得分:0)
您可以使用初始数据创建迁移,这样您就可以确保该条目存在。
另外,对于一个全局值只有一行的表,我建议使用包含行key
和value
(或类似)的表,以便在需要时添加新的全局值,您不需要进行架构迁移。