在Django Admin中保存或更新模型

时间:2011-07-14 11:08:31

标签: django django-models django-admin

我有以下结构:

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“更新,如果存在”,否则“创建新”。该模型只会增加计数。

感谢。

2 个答案:

答案 0 :(得分:1)

当你得到一个物体时就会发生创造。如果您在保存重复项时遇到问题,那么可能就是您应该查看的位置。

A.objects.get_or_create()

如果存在,则应该获取一个对象,否则创建。您可以检查它的pk,看它同一个对象,还是重复的。请参阅the documentation

答案 1 :(得分:1)

您可以检查“self.id”是否存在。如果是True,那么您正在更新,否则您正在创建新记录。