2012-12-12 64 views
0

我正在尋找使用Django來建立一個小的'Twitter風格'網站來掌握事物,並決定嘗試並允許多個用戶編輯每個帖子(最終基於權限)。現在我正在努力的是訪問每個用戶的帖子。以下是我的模型,視圖和模板的代碼,它顯示了所有用戶的「這裏沒有帖子」。我期待能夠顯示所有帖子用戶擁有的,似乎沒有在任何地方獲得:Django多對多訪問這兩種模型

models.py

from django.db import models 

class User(models.Model): 
    username = models.CharField(max_length = 200) 
    email = models.EmailField(max_length = 75) 
    password = models.CharField(max_length = 64) 
    created_date = models.DateTimeField('date created') 

    def __unicode__(self): 
     return self.username 

    class Meta: 
     ordering = ('created_date',) 


class Post(models.Model): 
    users = models.ManyToManyField(User) 
    title = models.CharField(max_length = 300) 
    post = models.TextField() 
    posted_date = models.DateTimeField('date created') 
    votes = models.IntegerField() 

    def __unicode__(self): 
     return self.title 

    class Meta: 
     ordering = ('posted_date',) 

views.py

from django.shortcuts import render, get_object_or_404 
from django.http import HttpResponse 

from users.models import User, Post 

def index(request): 
    latest_user_list = User.objects.order_by('username')[:5] 
    context = {'latest_user_list': latest_user_list} 
    return render(request, 'users/index.html', context) 

def detail(request, user_id): 
    user = get_object_or_404(User, pk=user_id) 
    post_list = Post.objects.filter(id == user.id) 
    return render(request, 'users/detail.html', {'user': user, 'post': post_list}) 

網址的.py

from django.conf.urls import patterns, url 

from users import views 

urlpatterns = patterns('', 
    url(r'^$', views.index, name='index'), 
    url(r'^(?P<user_id>\d+)/$', views.detail, name='detail'), 
) 

(模板) - detail.html

<h1>{{ user.username }}</h1> 
{% if post_list %} 
    <ul> 
    {% for post in post_list%} 
     <li>{{ post.title }}</li> 
    {% endfor %} 
    </ul> 
{% else %} 
    <p> There aint no posts here </p> 
{% endif %} 

回答

2

您傳遞給模板的變量稱爲post而不是post_list

2

更改視圖中列表對象的名稱。

def detail(request, user_id): 
    user = get_object_or_404(User, pk=user_id) 
    post_list = Post.objects.filter(id == user.id) 
    return render(request, 'users/detail.html', {'user': user, 'post_list': post_list})