2010-12-30 8 views
4

Ich bin sicher, es gibt hier eine einfache Antwort, aber ich kann es nicht sehen. Ich versuche, Fixtures in meine Datenbank zu laden, aber egal, welche Modell-ID ich verwende, bekomme ich den DeserializationError: invalid model identifier:... Fehler.Keine gültige Modellkennung für Django-Fixture-Daten?

Dateistruktur:

testproject/ 
    testapp/ 
     fixtures/ 
      data.json 
     __init__.py 
     models.py 
     tests.py 
     views.py 
    sqlite3.db 
    __init__.py 
    manage.py 
    settings.py 
    urls.py 

Da dies mein erstes gehen an Armaturen, ich bin mit dem Modell von http://www.djangoproject.com/documentation/models/fixtures/:

from django.db import models 
from django.conf import settings 

class Article(models.Model): 
    headline = models.CharField(max_length=100, default='Default headline') 
    pub_date = models.DateTimeField() 

    def __unicode__(self): 
     return self.headline 

    class Meta: 
     ordering = ('-pub_date', 'headline') 

data.json:

[ 
    { 
     "pk": "3", 
     "model": "testapp.article", 
     "fields": 
     { 
      "headline": "Time to reform copyright", 
      "pub_date": "2006-06-16 13:00:00" 
     } 
    }, 
    {  
     "pk": "2", 
     "model": "testapp.article", 
     "fields": 
     { 
      "headline": "Poker has no place on ESPN", 
      "pub_date": "2006-06-16 12:00:00" 
     } 
    }, 
    {  
     "pk": "1", 
     "model": "testapp.article", 
     "fields": 
     { 
      "headline": "Python program becomes self aware", 
      "pub_date": "2006-06-16 11:00:00" 
     } 
    } 
] 

Ich habe versucht testapp.article, testproject.article, testproject.testapp.article und sie alle th Zeile den gleichen Fehler. Ich benutze 1.2.4 mit Python 2.6 und benutze Loaddata anstatt Syncdb. Irgendwelche Ideen?

+2

Ich denke, dass app.modelclass das richtige Format ist. Haben Sie versucht, dumpdata zu sehen, was generiert wird? – luc

Antwort

2

Ihre Datei data.json ist in Ordnung, ich habe es versucht und es funktioniert.

Sind Sie sicher, dass Ihre db mit Ihren Modellen synchronisiert ist?

Was wird ausgeführt, um die Datei zu laden?

als Luc vorgeschlagen,

die „manage.py DumpData testapp“ -Ausgabe mit Dateien vergleichen
+0

Ich würde die Empfehlung, Ihre Modelle gegen die tatsächliche Datenbank zu überprüfen. Django kann die Modellbezeichner auf die Daten in Ihrer Datenbank stützen, nicht auf die Daten in Ihren Modellen. –

+0

& @David Antaramian: Ja, db wasnt ist korrekt mit den Modellen synchronisiert. Danke für Ihre Hilfe. – exm

0

Ich bin nicht sicher, ob dies überhaupt helfen, aber ich bin derzeit auf der Suche auf einige Befestigungen ich geschrieben habe und alle meine Modellbezeichner sind richtig verpackt.

Hier ist ein Beispiel von meinem Benutzerkonten Fixture, aber beachten Sie, dass es in YAML ist.

- model: auth.User 
    pk: 4 
    fields: 
    username: avirtue 
    first_name: Aurora 
    last_name: Virtue 
    is_active: true 
    is_superuser: false 
    is_staff: false 
    password: sha1$90431$9347d343e94122f94f9f02988f026a76d339ab02 
    email: [email protected] 

- model: users.UserProfile 
    pk: 4 
    fields: 
    user: 4 
    school_id: 420985 
    professor: false 

Dies ist in einer Datei unter dem Ordner Benutzer/Einrichtung/(das heißt, es ist eine Anwendung, Benutzer, und diese Datei wird in dieser Anwendung Einbauten Ordner).

Wie Sie sehen können, kommen die Modelle tatsächlich von zwei verschiedenen Standorten. Die zweite, die ich verwende, stammt aus derselben Anwendung und definiert eine UserProfile. Der erste ist eigentlich aus dem django.contrib.auth Modul, das das Projekt für die Authentifizierung verwendet.

+0

Ich bemerkte den unterschiedlichen Fall zwischen "Artikel" (in models.py) und "Artikel" in (data.json), aber das ist kein Problem. Ich habe es mit Postgres und SQLite verifiziert –

0

Ich hatte diesen gleichen Fehler "Invalid model identifier" mehrmals und was ich immer festgestellt habe ist, dass es entweder einen falschen App-Namen verwendet oder der App-Name falsch geschrieben ist. Das ist "Modell": "testapp.article", die Testapp wird entweder falsch geschrieben oder erwartet einen anderen App-Namen als testapp im obigen Fall.

0

Versuchen settings.py überprüfen, in meinem Fall nur hinzufügen, vergessen i app in INSTALLED_APPS

Verwandte Themen