2012-04-09 14 views

Antwort

2
def __init__(self, *args, **kwargs): 
    super(YourModel, self).__init__(*args, **kwargs) 
    self.impact = self.user.get_profile().someIntField 
+0

wird dies nicht vollständig die Art und Weise brechen das Modell initialisiert wird? brauchst du 'super (Model, self) nicht anzurufen .__ init __ (* args, ** kwargs)'? – Ferguzz

+0

Super wäre gut. Schön zu sehen, dass du schnell lernst. –

+0

Ihre Antwort akzeptiert nach einem schnellen Lesen dieser http://stackoverflow.com/questions/1355150/django-when-saving-how-can-you-check-if-a-field-haschanged - obwohl ich anrief Super für die Init. – Ferguzz

3

Aufschalten save Methode in Ihrem Modell

class MyModel(models.Model): 
    user = models.ForeignKey(User) 
    impact = models.IntegerField() 

    def save(self, *args, **kwargs): 
     if not self.pk: 
      self.impact = self.user.get_profile().someIntField 
     super(MyModel, self).save(*args, **kwargs) 
+0

aber ich will nur diesen Wert initialisieren, setzen Sie es nicht jedes Mal, wenn ich das Modellobjekt speichern. – Ferguzz

+0

Gibt es einen Parameter, den ich in save() erreichen kann, was mir sagt, dass ich das Objekt erstelle? – Ferguzz

+0

Ich habe meine Antwort aktualisiert. Wenn das Objekt erstellt (nicht aktualisiert) wird, wird der Impact-Wert festgelegt. Ich denke, es ist was Sie brauchen – San4ez

Verwandte Themen