2009-11-15 30 views
0

多種型號的我有類似這樣的object_list中在Django

Class Article(models.Model): 
    title = models.CharField() 
    body = models.TextField() 
    created_date = models.DateTimeField() 
    author_name = models.CharField() 

class Video(models.Model): 
    title = models.CharField() 
    body = models.TextField() 
    created_date = models.DateTimeField() 
    video_asset = models.CharField() 

現在一個特定的頁面上的多個抽象模型,我想這兩種模式聚集到基於其CREATED_DATE列表。所有我想要的車型,我知道將有一個titlecreated_date這樣我就可以做這樣的事情:

<ul> 
{% for object in object_list %} 
    <li>{{ object.title }} on {{ object.created_at }}</li> 
{% endfor %} 
</ul> 

我可以在這些領域的統計沒有問題在那裏。

我想過創建一個額外的模型和使用泛型外鍵。有點像聚合模型。那麼每次創建一個新對象時,我都會發出其中一個要創建的對象,然後從這個通用表中拉出。雖然我不太喜歡這個想法。似乎非常多餘。

任何雖然?

更新:我發現這個條目Using django how can I combine two queries from separate models into one query?,但它在我的情況下不會工作,因爲我使用抽象模型類爲這些(我只是沒有顯示它在本例中,以保持它的簡單和清晰越好)。我研究了繼承而不是抽象,但是我認爲在不斷的連接上性能會受到影響。可能不是

回答

2

只需在您的視圖中訂購created_date(或created_at,或兩者都使用),並將結果合併到一個列表中。這個列表可以在你的模板中使用。沒有模型繼承的東西或聚合模型需要。

1

你有錯別字...類的文章應該是類的文章 修復類的類(使其小寫)