2016-08-05 61 views
0

我在我的models.py中有一個名爲Features的類。在我的html中,我在右側顯示一個排除這些功能中的兩個的列表,其中一個是已選擇的活動功能,另一個是最近添加的功能,因爲它們是我的頁面的主要內容。列表中的其餘功能按日期顯示,並顯示我期待的內容。 現在,我想單獨列出該列表中的第一,第二和第三個特徵(僅標題),以便我可以將它們放置在它們自己的單獨div中 - 因爲每個特徵都具有獨特的css樣式。這樣做可能有很多種方法,但我似乎無法將其中的任何一種方法解決。如何使用Django模板定位特定對象

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 %} 

VIEWS

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

您可以在不同的變量前三特點存儲在您的上下文或添加檢查到模板循環狀{% if forloop.first %}{% if forloop.counter == 2 %}

+0

非常感謝。那就是我一直在尋找的東西! – David

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選項以獲得更多信息。

+0

謝謝kt14。這也非常有幫助。我很感激。 – David

相關問題