Nei modelli di Django si dice che questo modello esiste nei dettagli / models.py
class OccDetails(models.Model):
title = models.CharField(max_length = 255)
occ = models.ForeignKey(Occ)
Quindi, quando viene eseguito il sync db, vengono creati i seguenti campi
e in seguito a questo vengono aggiunti altri due campi e viene sincronizzato db. I nuovi campi non vengono creati. Quanto è risolvibile, anche ciò che è auto_now = true nel seguente
questi sono i nuovi campi
created_date = models.DateTimeField(auto_now_add=True)
modified_date = models.DateTimeField(auto_now_add=True, auto_now=True)
risposte:
7 per risposta № 1syncDB crea le tabelle del database per tutte le app in INSTALLED_APPS le cui tabelle non sono già state create.
Syncdb non modificherà le tabelle esistenti
syncdb
creerà solo tabelle per i modelli che non sono stati ancora installati. Non emetterà maiALTER TABLE
istruzioni per abbinare le modifiche apportate a una classe del modellodopo l'installazione. Le modifiche alle classi di modelli e agli schemi di database spesso implicano qualche forma di ambiguità e, in quei casi, Django dovrebbe indovinare le modifiche corrette da apportare. C'è il rischio che i dati critici vengano persi nel processo.
puoi o
- Emettere un manuale
ALTER TABLE
comando DROP TABLE
la tabella specifica (perderà i dati) ed eseguire nuovamente syncdb- correre django-admin sqlclear per ottenere una lista di istruzioni SQL per cancellare l'intero db ed eseguire quei comandi (svuoterà il db - perderete tutti i dati esistenti) o
DateField.auto_now
: imposta automaticamente il campo suNOW()
ogni volta che l'oggetto viene salvato. Utile per i timestamp "last-modified". Si noti che la data corrente viene sempre utilizzata; non è solo un valore predefinito che puoi escludere.
Quindi, il modified_date
la colonna verrà automaticamente aggiornata ogni volta che si chiama object.save()
3 per risposta № 2
Questo è un problema comune con Django. Come detto da Amarghosh, syncdb non può modificare lo schema delle tabelle esistenti.
Sud è stato creato per risolvere questo problema.
Lo raccomando.