2016-04-01 3 views
3

J'ai un problème avec mon application django, j'ai créé deux objets Blog, un en mysql et un autre avec ma vue. Je les vois tous les deux dans ma base de données mais je ne peux pas les voir quand je les obtiens avec une requête.Les requêtes Django retournent des chaînes vides

J'utilise django 1.9, Python 2.7, 2.2 avec apache mod_wsgi

Voici mon avis et mon modèle.

def list_view(request): 
    blogs = Blog.objects.filter(published=True) 

return render_to_response('blog/list.html', 
    { 
     "blogs": blogs, 
    }, 
    context_instance=RequestContext(request)) 


{% for blog in blogs %} 
    <h2>{{blog.title}}</h2> 
    <p>{{blog.content}}</p> 
    <span>{% trans 'Writen by' %} : {{blog.writer.last_name}} {{blog.writer.first_name}}</span> - <span>{% trans 'Published on' %} {{blog.date_published}}</span> 
{% endfor %} 

La requête me fait une liste avec 2 objets Blog à l'intérieur, mais ils sont vides. Mon modèle montre juste Writen By - Publié deux fois. Mais je peux me connecter et imprimer toutes mes informations d'utilisateur.

Une idée de ce qui pourrait être le problème ou comment je pourrais le résoudre? Merci beaucoup !

EDIT: ajouter models.py

class Blog(models.Model): 
    title = models.CharField(_("Title"), max_length=255, null=False, blank=False) 
    content = models.TextField(_("Content"), null=True, blank=True) 

    writer = models.ForeignKey(User, verbose_name=_('Writer'), blank=False, null=False) 

    published = models.BooleanField(_("Pusblished"), default=False) 
    date_published = models.DateTimeField(_("Date published")) 

    def __str__(self): 
     return '%s' % (self.title) 

    def __init__(self, *args, **kwargs): 
     super(Blog, self).__init__() 
+1

Est-ce que votre modèle de blog ont des attributs titre, le contenu et l'auteur? Afficher le code –

+0

J'ai ajouté mes models.py – Eowiena

Répondre

3

Lorsque vous Blog.__init__() redéfini, vous n'avez pas envoyé *args et **kwargs au parent. La magie du modèle Django a besoin de ces paramètres. Si vous ne faites rien dans __init__(), vous pouvez simplement supprimer tout cela ensemble.

Si vous voulez garder, faire quelque chose comme:

def __init__(self, *args, **kwargs): 
    super(Blog, self).__init__(*args, **kwargs) 
+3

... mais vous devriez définitivement l'enlever. –

+0

Je l'ai enlevé depuis que je ne l'utilise pas et cela a fonctionné merci! – Eowiena