Werfen, habe ich ein Modell namens ScheduleItemDjango speichern Aufschalten So Primary Doppelte Fehler
class ScheduleItem(models.Model):
agreement = FK
location = FK
start = models.DateTimeField()
end = models.DateTimeField()
totalHours = DecimalField
def get_total_hours(self):
start = timedelta(hours=self.start.hour, minutes=self.start.minute)
end = timedelta(hours=self.end.hour, minutes=self.end.minute)
td = (end-start).seconds
totalHours=Decimal(td/Decimal(60)/Decimal(60))
return totalHours
def save(self,*args,**kwargs):
if self.pk == None:
super(ScheduleItem,self).save(self,*args,**kwargs)
self.refresh_from_db() # to access the datetime values, rather than unicode POST
self.totalHours = self.get_total_hours()
else:
self.totalHours = self.get_total_hours()
super(ScheduleItem,self).save(self,*args,**kwargs)
Dieser Primärschlüssel wirft. Ich bekomme doppelte Einträge mit dem zweiten Super (ScheduleItem, self). Ich kann nicht für das Leben von mir herausfinden, wie man nach PK sucht, um auf den Datetime-Wert zuzugreifen, und dann erneut innerhalb der Save Override-Methode speichern. Ich habe versucht, Dinge zu verschieben, ich habe versucht, in der get_total_hours() -Funktion zu speichern, mit nichts als Ärger.
Ich möchte nur das Objekt an die db Committed, so dass ich die Datetime-Objekte abrufen und dann die Gesamtstunden berechnen kann.
Ich würde lieber nicht zu Datetime innerhalb der Speicherfunktion konvertieren.
Hat jemand einen Tipp oder kann mir jemand sagen, wo ich falsch liege?
Haben Sie id = models.AutoField (primary_key = True) in Ihrem Modell definiert? –