我有以下结构:
class A(models.Model):
a = models.ForeignKey(B, unique=True)
b = models.IntegerField(default=0, blank=True)
def save(self, *args, **kwargs):
self.b += 1
super(A, self).save(*args, **kwargs)
我希望保存时将“b”增加1。这在我第一次添加项目时工作正常,否则因为“uniqueTrue”子句而失败。
如何让Django“更新,如果存在”,否则“创建新”。该模型只会增加计数。
感谢。
答案 0 :(得分:1)
当你得到一个物体时就会发生创造。如果您在保存重复项时遇到问题,那么可能就是您应该查看的位置。
A.objects.get_or_create()
如果存在,则应该获取一个对象,否则创建。您可以检查它的pk,看它是同一个对象,还是重复的。请参阅the documentation。
答案 1 :(得分:1)
您可以检查“self.id”是否存在。如果是True,那么您正在更新,否则您正在创建新记录。