0

私はこのDjangoモデルを持っています:

#encoding:utf-8
from django.db import models
from django.contrib.auth.models import User
from django.contrib import admin

# Create your models here.
class Profile(models.Model):
    user = models.ForeignKey(User, unique=True, related_name='user')
    follows = models.ManyToManyField(User, related_name='follows', symmetrical=False, blank=True)
    bio = models.TextField(blank=True)
    avatar = models.ImageField(upload_to='avatar', blank=True)
    website = models.CharField(max_length=100, blank=True)
    place = models.CharField(max_length=100, blank=True)

    def __unicode__(self):
        return unicode(self.user)

admin.site.register(Profile)

admin.autodiscover()

次に、私はこの見解を持っています:

def profile(request, user_id):
    user = get_object_or_404(Profile, user=user_id)
    return render_to_response('user_view.html', {'user':user,})

ここで、user_view.html「ユーザー」データ(ユーザー名、アバター、Webサイトなど)を表示します。

{{user.user_id}}
{{user.user}}
{{user.website}}
{{user.avatar.url}}

ただし、フォローしているユーザーのユーザー名、アバター、Webサイトも表示する必要があります。これは私がしました:

{% for element in user.follows.all %}
    <a href="{{element.website}}">{{element.user}}</a>
    <img src="{{element.avatar.url}} />
{% endfor %}

ただし、ユーザーのデータを表示する代わりに、次のように表示されます。

<django.db.models.fields.related.RelatedManager object at 0x022F34F0>

しかし、私がこれを行う場合:

{% for element in user.follows.all %}
    <p>{{element}}</p>
{% endfor %}

ユーザーの名前は完全に表示されますが、それでもWebサイトやアバターを表示できません。これどうやってするの?

4

1 に答える 1

1

やってみようと思います

{% for element in user_data.follows.all %}
    <p>{{element.username}}</p>
    <p>{{element.profile.website}}</p>
    <p>{{element.profile.avatar}}</p>
{% endfor %}

elementUserのインスタンスであり、 Profileのインスタンスではありません。ただし、次のように記述して、関連付けられたプロファイルインスタンスを取得することはできます。

element.profile

1対1の関係であるため(OneToOneFieldまたはForeignKey(unique = True))

于 2012-09-25T11:19:18.757 に答える