Je prends rendez-vous pour une fonctionnalité de réservation dans une application. Pour cela, j'ai le début et la fin de deux quarts de travail. En utilisant les valeurs de ces deux champs, j'aimerais trouver le nombre total de minutes dans chaque quart, puis le diviser en tranches d'une demi-heure. Le problème que j'ai est le suivant:Prise de valeur de Timefield dans un modèle et Utilisation des opérations datetime sur celui-ci.
La bibliothèque datetime attend des objets datetime d'évaluer un timedelta mais tout ce que j'ai sont TimeField. Comment puis-je convertir TimeField à datetime.time valeur
Ci-dessous le modèle:
class ClinicMembershipAttribute(models.Model):
DAY_CHOICES = (
('Monday', 'Monday'),
('Tuesday', 'Tuesday'),
('Wednesday', 'Wednesday'),
('Thursday', 'Thursday'),
('Friday', 'Friday'),
('Saturday', 'Saturday'),
('Sunday', 'Sunday')
)
clinicmembership = models.ForeignKey(ClinicMembership, null=True, blank=True)
day = models.CharField(choices=DAY_CHOICES, null=True, blank=True, max_length=12)
shift_one_start = models.TimeField(null=True, blank=True)
shift_one_end = models.TimeField(null=True, blank=True)
shift_two_start = models.TimeField(null=True, blank=True)
shift_two_end = models.TimeField(null=True, blank=True)
def get_appointment_status_string(self):
first_shift_delta = (datetime.datetime.combine(datetime.date(1,1,1),self.shift_one_start) - datetime.datetime.combine(datetime.date(1,1,1), self.shift_one_end)).time()
second_shift_delta = (datetime.datetime.combine(datetime.date(1,1,1),self.shift_two_start) - datetime.datetime.combine(datetime.date(1,1,1), self.shift_two_end)).time()
first_shift_seconds = first_shift_delta.seconds()
second_shift_seconds = second_shift_delta.seconds()
def __str__(self):
return self.day + " - '"+str(self.shift_one_start) +" - " + str(self.shift_one_end) + "', '" + str(self.shift_two_start) +" - " + str(self.shift_two_end) + "'"
erreur est first_shift_delta et second_shift_delta.
Hey Westly! quand j'essaie de first_shift_delta à l'intérieur de la fonction datetime.combine, il est dit que le type attendu 'time' a obtenu 'TimeField' à la place. – blueChair
Essayez de changer shift_one_start = models.TimeField (null = True, vide = True) –