сохранить или обновить модель в Django Admin - PullRequest
0 голосов
/ 14 июля 2011

У меня есть следующая структура:

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 ]

1 голос
/ 03 июля 2013

Вы можете проверить, существует ли «self.id».Если это правда, то вы обновляете, иначе вы создаете новую запись.

1 голос
/ 14 июля 2011

Создание происходит, когда вы получаете объект.Если у вас есть проблема с сохранением дубликатов, это, вероятно, именно то, что вам нужно искать.

A.objects.get_or_create()

должен получить объект, если он существует, создайте иначе.Вы можете проверить его pk, чтобы увидеть, является ли он тем же объектом или дубликатом.См. документацию .

...