我的models.py中有一个名为Features的类。在我的html中,我在右侧显示一个列表,其中排除了其中两个功能,一个是已选择的活动功能,另一个是最近添加的,因为它们是我页面的主要内容。列表中的其余功能按日期显示,并显示我期待的内容。 现在,我想在THAT列表中挑出第一,第二和第三个功能(仅限标题),这样我就可以将它们放在各自独立的div中 - 因为每个功能都有独特的css样式。可能有很多方法可以做到这一点,但我似乎无法找出它们中的任何一个。
This is a link到我的项目中,以便更好地了解我想要的内容(基本上是尝试将内容放在右边那些彩色框中。)
我只是在学习Django(以及Python),感谢您的耐心和帮助!
HTML
{% for f in past_features %}
{% if f.title != selected_feature.title %}
{% if f.title != latest_feature.title %}
<h1>{{ f.title }}</h1>
{% endif %}
{% endif %}
{% endfor %}
视图
def feature_detail(request, pk):
selected_feature = get_object_or_404(Feature, pk=pk)
latest_feature = Feature.objects.order_by('-id')[0]
past_features = Feature.objects.order_by('-pub_date')
test = Feature.objects.last()
context = {'selected_feature': selected_feature,
'latest_feature': latest_feature,
'past_features': past_features,
'test': test}
return render(request, 'gp/feature_detail.html', context)
模型
class Feature(models.Model):
title = models.CharField(db_index=True, max_length=100, default='')
content = models.TextField(default='')
pub_date = models.DateTimeField(db_index=True, default=datetime.now, blank=True)
def __str__(self):
return self.title
def __iter__(self):
return [
self.id,
self.title ]
答案 0 :(得分:1)
您可以将前三个功能存储在上下文中的单独变量中,也可以将检查添加到模板循环中,如{% if forloop.first %}
或{% if forloop.counter == 2 %}
。
答案 1 :(得分:0)
如果你想要的只是没有
selected_feature
latest_feature
past_features查询集中的这两个记录,然后您可以在past_features查询上使用exclude并传递selected_features和latest_feature对象的id。
views.py看起来像:
def feature_detail(request, pk):
selected_feature = get_object_or_404(Feature, pk=pk)
latest_feature = Feature.objects.order_by('-id')[0]
# Collect all the id's present in the latest_feature
excluded_ids = [record.pk for record in latest_feature]
excluded_ids.append(selected_feature.pk)
#This would only return the objects excluding the id present in the list
past_features = Feature.objects.order_by('-pub_date').exclude(id__in=excluded_ids)
test = Feature.objects.last()
context = {'selected_feature': selected_feature,
'latest_feature': latest_feature,
'past_features': past_features,
'test': test}
return render(request, 'gp/feature_detail.html', context)
Django提供了丰富的ORM并且有详细记录,请查看Queryset选项以获取更多信息。
答案 2 :(得分:0)
要访问 Django 模板中的特定对象,请参见以下示例:
要访问第一个对象,您可以使用 {{ students.0 }}
要访问第二个对象,您可以使用 {{ students.1 }}
要访问特定字段,例如对象 4 中的名字,您可以使用 {{ students.3.firstname }}
要访问第二个对象中的图像字段,您可以使用 {{ students.1.photo.url }}
要访问第一个对象中的 id,您可以使用 {{ students.0.id }}