Tout d'abord? Le numéro que vous essayez d'ajouter est-il un nombre fixe? Si oui, pourquoi devez-vous le stocker dans le db? Vous pouvez créer une méthode pour votre modèle qui fonctionne comme une propriété et ajoute le numéro lorsque vous avez besoin:
class ModelX(models.Model):
...
def special(self):
num = 1000
return self.id + num
Si vous avez vraiment besoin de stocker ce à la DB dont vous avez besoin peut-être faire un accès à deux bases de données parce que Daniel dit, vous obtenez l'ID après que l'objet est stocké dans la DB.
Vous pouvez modifier votre méthode save
à celui-ci:
def save(self, *args, **kwargs):
num = 1000
self = super(MyModel, self).save(*args, **kwargs)
self.special = obj.id + num
self.save()
Notez que cela peut être optimisé en faisant juste ce la première fois qu'un objet est créé dans la db, où self.special
est NULL
ou valeur par défaut en fonction sur la façon dont vous avez déclaré votre modèle.
def save(self, *args, **kwargs):
num = 1000
self = super(MyModel, self).save(*args, **kwargs)
# self.special is null, (creating the object in the db for the 1st time)
if not self.special: # or if self.special != defaultvalue (defined in MyModel)
self.special = obj.id + num
self.save()
J'espère que cela aide.