J'ai couru dans cette erreur lorsque python en cours d'exécution manage.py migration lors de l'utilisation DurationField et TimeField les deux me donnent un:TimeField et DurationField int erreur
return int(round(value.total_seconds() * 1000000))
AttributeError: 'int' object has no attribute 'total_seconds'
J'ai vu cette erreur sur ce site, mais seulement pour une Django 1.8. Actuellement, j'utilise Django 1.10. J'ai essayé ces suggesions:
DurationField(default=timedelta()),
DurationField(),
DurationField(default=timedelta()),
DurationField(default=int(timedelta(minutes=20).total_seconds())).
Mon modèle ressemble actuellement:
class SomeModel(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
lunchnumber = models.IntegerField(null=True, blank=True)
role = models.PositiveSmallIntegerField(choices=ROLE_CHOICES,null=True, blank=True)
breaktime = models.DurationField(default=timedelta(minutes=45))
def to_python(self, value):
if value is None:
return value
if isinstance(value, datetime.timedelta):
return value
try:
parsed = parse_duration(value)
except ValueError:
pass
else:
if parsed is not None:
return parsed
Aborder la question de Prakhar Trivedi: Je ne sais pas quelle valeur ne fonctionne pas bien. J'étais sous l'hypothèse que c'était la valeur par défaut que django essayait de remplir avec cette table de base de données. Je suis sous cette impression à cause de ....... dans get_db_prep_value retour int (rond (value.total_seconds() * 1000000)) AttributeError: 'int' objet n'a pas d'attribut 'total_seconds'
Répondre Réponse d'iklinac:
Je suis entré et j'ai ajouté la valeur par défaut = timedelta (minutes = 45). Je l'ai importé du datetime Mais je sens qu'il me manque quelque chose. Je suis très nouveau à ce sujet et n'ai pas vu une fonction to_python. Qu'est-ce qui me manque? Je reçois toujours la même erreur?
Qu'est-ce que ** value ** dans ** value.total_seconds() **. Lequel des champs est la valeur de votre modèle? –
ooh @PrakharTrivedi c'est ce que je voulais dire, il semble que j'ai demandé à autre chose :) – e4c5
Hey Travis avez-vous vérifié que vous avez importé Timedelta comme je l'ai déclaré ci-dessous dans votre models.py. En ce qui concerne aussi la fonction to_python qui est la fonction derrière le champ Durée, il n'est pas nécessaire de l'inclure. En ce qui concerne la dernière partie du commentaire si datetime rencontre toujours des problèmes, vous pouvez utiliser le format d'heure django indiqué ci-dessous dans la section commentaire de parse_value – iklinac