2015-11-01 2 views
0

J'utilise un legacy database (en plus d'une base de données 'normale'), défini dans mon settings.py:Django-commentaires et base de données héritée? "OperationalError: pas de table"

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.sqlite3', 
     'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), 
       }, 
    'articles_database': { 
     'ENGINE': 'django.db.backends.sqlite3', 
     'NAME': os.path.join(BASE_DIR, 'articles.db'), 
} } 

et dans mon models.py avec:

from django.db import models 

class ArticlesTable(models.Model): 
    id = models.IntegerField(primary_key=True) # AutoField? 
    article_type = models.TextField(blank=True, null=True) # This field type is a guess. 
    article_name = models.TextField(blank=True, null=True) # This field type is a guess. 
    article_number = models.IntegerField(db_column='article_number', blank=True, null=True) # Field name made lowercase. 

    class Meta: 
     managed = False 
     db_table = 'articles_table' 

Après avoir installé Django-commentaires sur mon Django 1.8.5: Je peux obtenir une forme appropriée pour remplir un commentaire, mais en cliquant sur le bouton « Poster » obtient cette erreur:

OperationalError at /comments/post/ 

no such table: articles_table 

avec la ligne d'erreur mis en évidence:

/home/gus/.Envs/python3_django/lib/python3.4/site-packages/django_comments/views/comments.py in post_comment 

56. target = model._default_manager.using(using).get(pk=object_pk) 

Apparemment, Django-commentaires n'ont pas trouvé ma table dans ma base de données? Est-il possible d'utiliser une base de données existante avec Django-comments?

EDIT: J'ai fixé le modèle pour ma base de données existante comme @Geo Jacob a suggéré:

class Meta: 
    managed = True 
    db_table = 'articles_table' 

Mais maintenant, je me suis une page d'erreur (fourni par Django-commentaires, pas une page de débogage) :

Comment post not allowed (400) 
Why: No object matching content-type 'articles.articlestable' and 
object PK '1' exists. 

The comment you tried to post to this view wasn't saved because 
something tampered with the security information in the comment 
form. The message above should explain the problem, or you can check 
the comment documentation for more help. 

Django-commentaires dans la fonction post_comment obtient le modèle droit (ArticlesTable) mais ne peut pas trouver l'objet ???

Répondre

0

Vous devez supprimer managed=False

class Meta: 
    managed = True 
    db_table = 'articles_table' 

Maintenant makemigrations ou syncdb, puis articles_table sera créé.

+0

Maintenant j'ai: Le commentaire n'est pas autorisé (400) Pourquoi: \t Aucun objet ne correspond au type de contenu 'articles.articlestable' et l'objet PK '1' existe. Le commentaire que vous avez essayé de publier sur cette vue n'a pas été enregistré car quelque chose a altéré les informations de sécurité dans le formulaire de commentaire. – ThePhi