2015-02-24 73 views
0

我有兩個觀點,一個是標籤,另一種是用於類別。那就是標籤字段有ManyToManyField,和類別有ForeginKey關係,我的模型。我的兩個觀點在這裏:如何將兩個類似的觀點結合成一個

def tag_posts(request, slug): 
    tag = get_object_or_404(Tags, slug=slug) 
    posts = tag.post_set.all() 
    return render(request, 'blog/cat_and_tag.html', {'posts': posts})  

def category_posts(request, slug): 
    category = get_object_or_404(Category, slug=slug) 
    posts = category.post_set.all() 
    return render(request, 'blog/cat_and_tag.html', {'posts': posts}) 

我想這一點:

def new_view(request, slug): 
    instance = get_object_or_404([I want model name dynamic], slug=slug) 
    posts = instance.post_set.all() 
    return render(request, 'blog/cat_and_tag.html', {'posts': posts}) 

是有這兩種觀點結合到一個視圖中的一種方式?我閱讀了關於內容類型框架。是否有可能做到我想要的呢?

+0

你想要什麼樣的組合視圖 去做? – 2015-02-24 11:23:22

回答

1

您可以通過某些URL重新路由魔術做到這一點。這個是你的觀點:

def new_view(request, type, slug): 
    if type == 'tag': 
     instance = get_object_or_404(Tags, slug=slug) 
    elif type == 'category': 
     instance = get_object_or_404(Category, slug=slug) 
    else: 
     return Http404() 
    posts = instance.post_set.all() 
    return render(request, 'blog/cat_and_tag.html', {'posts': posts}) 

然後,在你urls.py

url(r'^(?P<type>\w+)/(?P<slug>\d\w_+)$', 'project.views.project_edit', name='posts_by_type') 

現在你可以使用新的URL在您的模板代碼:

<a href="{% url 'posts_by_type' 'tag' slug %}">...</a> 

<a href="{% url 'posts_by_type' 'category' slug %}">...</a> 
相關問題