【发布时间】:2014-06-11 10:16:41
【问题描述】:
我想一次提供一个投票条目,从最新的未投票开始,向下移动到最旧的未投票。如果所有条目都已投票,我想显示一个随机投票的条目。
在 Entry 模型中,我有一个投票布尔值;
模型
class Entry(models.Model):
text = models.CharField(max_length=15)
score = models.IntegerField(default=0)
pub_date = models.DateTimeField('date published')
voted = models.BooleanField(default=False)
def __unicode__(self):
return self.text
def was_published_recently(self):
return self.pub_date >= timezone.now() - datetime.timedelta(days=1)
was_published_recently.admin_order_field = 'pub_date'
was_published_recently.boolean = True
was_published_recently.short_description = 'Published recently?'
在条目:视图中,我定义了在表格中显示并用于投票的条目:
观看次数
def index(request):
context = {
'latest_entry_list': Entry.objects.order_by('-pub_date')[:10],
'high_entry_list': Entry.objects.order_by('-score')[:10],
'low_entry_list': Entry.objects.order_by('score')[:10],
'voting_entry_list': Entry.objects.filter(voted = False).order_by('-pub_date')[:1],
}
return render(request, 'entries/index.html', context);
'voting_entry_list':Entry.objects.filter(voted = False).order_by('-pub_date')[:1],
我称它为投票列表,但它仅包含要显示投票的排序条目。
这将负责显示最新的未投票条目,我知道我需要检查已投票是否为真,在这种情况下显示一个随机条目,但我似乎无法获得正确的语法来执行此操作。我认为对 voted=False 的检查返回 null 可以让我执行 else 函数来选择一个随机条目,但我似乎无法在我的代码中使用它。
有人可以提个建议吗?
【问题讨论】:
-
你可以两者兼得。然后在
index.html中使用if not voting_entry_list: ...,这样它将显示所有未投票的内容(如果为true,则显示voting_entry_list,因为voting_entry_list 不为空)。else如果所有输入都已投票,则显示一个随机投票的条目。我不是专家,但对我来说这听起来很合乎逻辑。 -
这应该可行,而且是有道理的。我想我希望用一行优雅的代码来做到这一点。我会继续努力,但是当我厌倦的时候保留那个:) ....thankx
-
别担心!很高兴我能帮上忙。
标签: django syntax sqlite null boolean