在Django模型中,我想避免双重选择,所以我写了这样一段话:
class Points(TimeStampedModel):
....
def save(self, *args, **kwargs):
if self.pk:
super(Points, self).save(*args, **kwargs)
else: # save() is a creation here, not an update
if Points.objects.filter(benef_card=self.benef_card,
spendable_at=self.spendable_at).exists():
pass
else:
super(Points, self).save(*args, **kwargs)
我很惊讶在我的数据库中发现了这个结果:
我想我的代码可能有问题,但我想知道,除了我在save()
方法中编写的保护之外,这些双重代码是如何存在的?你知道吗
我想你想要的是:
那么您就不需要重写
save
惟一性将由DB约束处理,这通常是一种方法。这种方法更好,因为save
并不总是被调用(例如:批量操作),所以您可能会在应用程序中获得不同的行为。你知道吗您可能还想签出^{} ,它只返回一个具有所需属性的对象,如果它不存在则创建它。你知道吗
您可以使用Django signals来代替保存前的检查。你知道吗
相关问题 更多 >
编程相关推荐