2017-02-02 3 views
0

Je souhaite obtenir tous les objets du modèle de code et comptabiliser la longueur des objets renvoyés. Je reçois une erreur que je ne peux pas comprendre.Erreur lors de l'extraction d'objets du modèle Django

Ceci est mon modèle

class Codes(models.Model): 
    username = models.CharField(max_length=100) 
    code = models.CharField(max_length=10000) 
    language = models.CharField(max_length=100) 

    def __str__(self): 
     return self.language 

J'utilise la fonction ci-dessous pour obtenir tous les objets du modèle

def get_all_codes(lang): 
    queryset = Codes.objects.filter(language = lang) 
    return queryset 

appel de la fonction

all_codes_of_lang = get_all_codes(lang) 

et essayer de compter la longueur en utilisant:

if len(all_codes_of_lang) > 0: 
    print("abc") 

conduit à cette erreur:

if len(all_codes_of_lang) > 0: 
    File "/usr/local/lib/python2.7/site-packages/django/db/models/query.py", line 240, in __len__ 
    self._fetch_all() 
    File "/usr/local/lib/python2.7/site-packages/django/db/models/query.py", line 1074, in _fetch_all 
    self._result_cache = list(self.iterator()) 
    File "/usr/local/lib/python2.7/site-packages/django/db/models/query.py", line 52, in __iter__ 
    results = compiler.execute_sql() 
    File "/usr/local/lib/python2.7/site-packages/django/db/models/sql/compiler.py", line 848, in execute_sql 
    cursor.execute(sql, params) 
    File "/usr/local/lib/python2.7/site-packages/django/db/backends/utils.py", line 79, in execute 
    return super(CursorDebugWrapper, self).execute(sql, params) 
    File "/usr/local/lib/python2.7/site-packages/django/db/backends/utils.py", line 64, in execute 
    return self.cursor.execute(sql, params) 
    File "/usr/local/lib/python2.7/site-packages/django/db/utils.py", line 95, in __exit__ 
    six.reraise(dj_exc_type, dj_exc_value, traceback) 
    File "/usr/local/lib/python2.7/site-packages/django/db/backends/utils.py", line 64, in execute 
    return self.cursor.execute(sql, params) 
ProgrammingError: relation "submissions_codes" does not exist 
LINE 1: ...odes"."code", "submissions_codes"."language" FROM "submissio... 
                  ^

--> 
+3

Vos modèles ne sont pas synchronisés avec votre base de données. Exécutez 'python manage.py makemigrations' et' python manage.py migrate' pour corriger. – SaeX

Répondre

0

Ce problème est pas avec la fonction get_all_codes ou compter la longueur, mais avec un problème de synchronisation entre vos modèles et votre base de données.

Exécutez python manage.py makemigrations et python manage.py migrez pour corriger.

0

Les modèles n'ont pas migré, c'est la raison pour laquelle vous avez cette erreur. Exécuter les commandes suivantes

  • python manage.py makemigrations
  • python manage.py migrate