0

私はブログを作成しており、記事はログインのみで投稿されます。そのため、User、JSdetails、Blog、comments などの 4 つのテーブルがあります。この 4 つのテーブルは相互に関連しています。ここでは、コメントにプロフィール写真を表示したいと考えています。試してみましたが、表示できませんでした。アイデアをください。以下にモデル、ビュー、テンプレートを追加しました...

models.py

class User(models.Model):
    first_name=models.CharField()
    last_name=models.CharField()
    username=models.CharField()

class JSdetails(models.Model):
    user=models.ForeignKey(User)
    profilepic=models.ImageField(upload_to='Image')

class Blog(models.Model):
    user=models.ForeignKey(User)
    btitle=models.CharField()
    bcontent=models.TextField(blank=True)
    bposted=models.DateTimeField(auto_now = True)

class BComments(models.Model):
    user=models.ForeignKey(User)
    blog=models.ForeignKey(Blog)
    comments=models.TextField()
    commentpost=models.DateTimeField(auto_now = True)

ビュー.py

def blogArticle(request):
    articleid=1
    article=Blog.objects.filter(id=articleid)
    com=BComments.objects.filter(blog_id=articleid)
    return render_to_response('registration/BlogArticle.html',{'article':article,'com':com},context_instance=RequestContext(request))

テンプレート

/* Here Article will display */    

{% for article in article %}
<h2>{{article.btitle}}</h2>
<p style="text-align:justify;">{{article.bcontent}}</p>
{% endfor %}

/* Here Comments get displayed which is posted by user */

{% for com in com %}
<img style="width:50px;height:50px;" src="Here I need to Display Profile picture" >
<span>{{com.user.username}}</span>
<p style="word-wrap:break-word;">
{{com.comments}}
</p>
{% endfor %}
4

1 に答える 1

1

ユーザーにを設定したForeignKeyため、ユーザー モデルには があり、jsdetails_setこれはRelatedManagerです。テンプレートでこれを試すことができます:

{{ com.user.jsdetails_set.all.0.profilepic.url }}

jsdetailsこれにより、最初のインスタンスが返されます。設定されていない場合に 0 インデックスにアクセスしようとすると、黙って失敗するかどうかはわかりません。

于 2013-05-18T09:58:14.893 に答える