检查views.py中的布尔字段状态

时间:2015-06-18 21:01:02

标签: django django-views

我尝试为item添加简单的发布/取消发布功能。我在模型中创建了一个布尔字段,并尝试在views.py中检查true / false状态。如果它是假的 - 显示404页面..

但我无法正确编写视图 - 语法错误无效。我怎样才能使它发挥作用?

我的模特:

class Article(models.Model):
    class Meta():
        db_table = 'article'

    title = models.CharField(max_length=200, blank=False, null=False)
    anchor = models.CharField(max_length=200, blank=False, null=False)
    image = models.ImageField(upload_to='items', blank=False, null=False)
    text = RedactorField(blank=False, null=False)
    files = models.FileField(upload_to='files', null=True, blank=True)
    date = models.DateField(blank=True, null=True)
    tags = TaggableManager()
    published = models.BooleanField(default=False)

    def __str__(self):
        return self.anchor

我的观点:

def article(request, anchor):
    article = Article.objects.get(anchor=anchor)
    if article.published = True:
        args = {}
        args['article'] = Article.objects.get(anchor=anchor)
    else:
        Http404

    return render_to_response('article.html', args, context_instance=RequestContext(request))

2 个答案:

答案 0 :(得分:2)

这实际上是一个常见的编程错误。请参阅Operators

  

=实际上是赋值运算符,而==检查相等。

您使用的语句始终返回true,因此传递If条件。

同样,布兰登指出,如果将article.published用于布尔值,你总是可以使用。

请将您的问题标记为已回答,如果您认为自己已经解决了问题。

答案 1 :(得分:0)

布兰登指出,我只需要使用if article.published: 另外,请向Krishnan和Gocht解释语法。

def article(request, anchor):
    article = Article.objects.get(anchor=anchor)
    if article.published:
        args = {}
        args['article'] = Article.objects.get(anchor=anchor)
    else:
        Http404

    return render_to_response('article.html', args, context_instance=RequestContext(request))