2015-09-07 17 views
8

Ho fatto modulo/models.py App12 come:TypeError: int() argomento deve essere una stringa o un numero, non 'datetime.datetime'

from django.db import models 

class Question(models.Model): 

    ques_text=models.CharField(max_length=300) 
    pub_date=models.DateTimeField('Published date') 

    def __str__(self): 
     return self.ques_text 

class Choice(models.Model): 

    # question=models.ForeignKey(Question) 
    choice_text=models.CharField(max_length=300) 
    votes=models.IntegerField(default=0) 

    def __str__(self): 
     return self.choice_text 

Poi corro i cmds

python manage.py makemigrations App12 
python manage.py migrate 

e quindi immettere 2 record nel modello domanda come:

Question.objects.create(ques_text="How are you?",pub_date='timezone.now()') 
       # and (ques_text="What are you doing?",pub_date='timezone.now()') 

poi mi rendo conto che domanda e modelli scelta dovrebbe essere in relazione chiave esterna e togliere il commento alla dichiarazione di cui sopra commentato nel codice modelli

quando faccio funzionare il "python manage.py makemigrations App12", che sta funzionando benissimo, ma dopo che, io sono sempre l'errore

"TypeError: int() argument must be a string or a number, not 'datetime.datetime" 

quando sto facendo funzionare "python manage.py migrare "il comando.

Qualcuno può aiutarmi. Come posso aggiungere una relazione di foreignkey tra il modello Choice e il modello di domanda ora.

+2

Il traceback indica dove si trova l'errore? – dietbacon

+0

qual è il problema con il ForeignKey che hai commentato? – dietbacon

+0

Nessun problema.Ma questo problema si è verificato durante il codice. Prima mi sono dimenticato di aggiungere la relazione con la chiave esterna, ma dopo qualche tempo ho capito che dovrebbe esserci una relazione di chiave esterna tra i modelli Domanda e Scelta. Ma facendo il comando migrate, mostra l'errore precedente. Perché sta mostrando tale errore e come posso liberarmi di questo problema. – Jagat

risposta

13

dal file di migrazione è normale che si ottiene questo errore, si sta tentando di memorizzare un datetime su un ForeignKey, che ha bisogno di essere un int.

Questo è accaduto quando la migrazione ti chiedeva quale valore verrà impostato per le vecchie righe di scelta perché è richiesto il nuovo ForeignKey.

Per risolvere il problema, è possibile modificare il file di migrazione e modificare datetime.date ... in un ID valido dalla tabella delle domande come il codice seguente. In alternativa, elimina il file di migrazione ed esegui nuovamente ./manage.py makemigrations, quando ti verrà chiesto se il valore predefinito richiede un ID domanda valido, non un datetime.

from future import unicode_literals 
from django.db import models, migrations 
import datetime 

class Migration(migrations.Migration): 
    dependencies = [ ('App11', '0003_remove_choice_question'), ] 
    operations = [ 
     migrations.AddField(
      model_name='choice', 
      name='question', 
      field=models.ForeignKey(default=1, to='App11.Question'), preserve_default=False,), 
    ] 
+1

Eliminare le "migrazioni" e rieseguire "./manage.py makemigrations" ha risolto un problema simile. – Shilpa

2

pub_date non deve essere una stringa. Crea il tuo oggetto come segue:

from django.utils import timezone 
Question.objects.create(ques_text="How are you?",pub_date=timezone.now()) 
+0

Sì, hai ragione che pub_date non dovrebbe essere una stringa nella mia dichiarazione pub_date = 'timezone.now()', ma mi dovrebbe piacere: pub_date = timezone.now(), in realtà è stato scritto da me per errore. Ma ancora, la domanda è la stessa. Qualcuno può aiutarmi e dirmi perché sta succedendo ?? – Jagat

+0

Puoi fornire il contenuto dei file in App12/migrazioni? Ho il sospetto che tu abbia generato migrazioni errate. –

+0

da __future__ unicode_literals importazione dai modelli di importazione django.db, migrazioni import datetime classe migrazioni (migrations.Migration): dipendenze = [ ('App11', '0003_remove_choice_question'), ] operazioni = [ migrazioni.AddField ( model_name = 'choice', name = 'question', field = models.ForeignKey (default = datetime.date (2015, 9, 7), to = 'App11.Question'), preserve_default = False, ), ] – Jagat

Problemi correlati