Django 查询返回空字符串

Posted

技术标签:

【中文标题】Django 查询返回空字符串【英文标题】:Django queries return empty strings 【发布时间】:2016-07-21 10:05:07 【问题描述】:

我的 django 应用程序有问题,我创建了两个博客对象,一个在 mysql 中,另一个在我的视图中。我在我的数据库中都看到了它们,但是当我通过查询获取它们时却看不到它们。

我正在使用 django 1.9、python 2.7、apache 2.2 和 mod_wsgi

这是我的观点和模板。

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 %

查询给我一个列表,里面有 2 个博客对象,但它们是空的。我的模板只显示 Writen By - Published on 两次。

但我可以登录并打印我所有的用户信息。

知道可能是什么问题或我该如何解决?非常感谢!

编辑:添加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__()

【问题讨论】:

您的博客模型有标题、内容和作者属性吗?显示代码。 我已经添加了我的 models.py 【参考方案1】:

当您覆盖 Blog.__init__() 时,您没有将 *args**kwargs 发送给父级。 Django 模型魔术需要这些参数。如果你没有在__init__() 中做任何事情,你可以一起删除它们。

如果您想保留它,请执行以下操作:

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

【讨论】:

...但您绝对应该删除它。 我已经删除了它,因为我不使用它并且它有效,谢谢!

以上是关于Django 查询返回空字符串的主要内容,如果未能解决你的问题,请参考以下文章

Python Django 模板和测试变量是不是为空或空字符串

Django CharField 不默认为空字符串

为啥django在扩展后生成空字符串?

Django:查找非空字符串的优雅方式

如何检查 django 表单数据是不是为 ​​None、''(空字符串)或 False

Django和Bootstrap:防止出现空字符串时出现警告框