2016-10-12 1 views
3

J'essaie de créer un appareil JSON pour l'un de mes modèles Django.Comment fournir l'heure actuelle à DateTimeFields dans les appareils Django?

Le modèle est assez simple:

class Tag(models.Model): 
    tag = models.CharField(max_length=50, null=True, blank=True) 
    created_at = models.DateTimeField(auto_now_add=True) 

Mon appareil est aussi simple:

[ 
    { 
    "model": "myapp.tag", 
    "pk": 1, 
    "fields": { 
     "tag": "Test 1" 
    } 
    }, 
{ 
    "model": "myapp.tag", 
    "pk": 2, 
    "fields": { 
     "tag": "Test 2" 
    } 
    } 
] 

Malheureusement, j'obtiens l'erreur suivante lorsque vous essayez de lancer l'appareil:

IntegrityError: NOT NULL constraint failed: myapp_tag.created_at 

Il semble donc que auto_now_add=True ne soit pas appelée lorsqu'un projecteur est lancé. Je ne veux pas coder en dur une date car cela semble bizarre. (Je pense aussi que le codage en dur du PK est bizarre.)

Est-il possible d'utiliser automatiquement la date created_at aujourd'hui?

Et en bonus, le PK peut-il automatiquement s'incrémenter?

Merci pour votre aide.

+0

Etes-vous en train d'insérer en utilisant django orm? –

+0

Merci pour votre réponse. Je fais l'entrée via 'python3 manage.py loaddata tags.json' –

Répondre

0

auto_now_add=True ne fonctionnera que si vous django insère un enregistrement dans la base de données, sinon cela ne fonctionnera pas. Pour le faire fonctionner, écrivez un simple script python et mettez à jour le fichier json avec le datetime actuel et essayez cette commande pour charger les données dans la base de données.