以下に単純なモジュールがあり、Person モジュールに次のフィールドがあります。
class Person(models.Model):
user = models.ForeignKey(User)
name = models.CharField(max_length=100)
image = models.FileField(upload_to="images/",blank=True,null=True)
following = models.ManyToManyField('self', related_name='followers', symmetrical=False, blank=True, null=True)
def __unicode__(self):
return self.name
sarah、jim、ben という 3 つのアカウントを作成しました。私はサラにジムとベンをフォローさせることができましたが、サラがフォローした人を表示すると、オブジェクト自体ではなくクエリセットが返されます。それらを自分の Person モジュールに関連付けて、サラがフォローしている人々の名前を表示できるように、それらをオブジェクト自体に取得するために逆に作業するにはどうすればよいでしょうか。
これは私が理解していない部分です
>>> from pet.models import *
>>> from django.contrib.auth.models import User
>>> sarah = User.objects.get(username='Sarah')
>>> jim = User.objects.get(username='Jim')
>>> ben = User.objects.get(username='Ben')
>>> Sarah = Person.objects.get(user=sarah)
>>> Jim = Person.objects.get(user=jim)
>>> Ben = Person.objects.get(user=ben)
>>> Sarah.following.add(Jim,Ben) //setup the many to many relationship
>>> Sarah.save()
>>> Sarah.following.all() // return a queryset of Person objects which john is following.
[<Person: Jim>, <Person: Ben>]
テンプレートでユーザーがフォローしているすべてのユーザー オブジェクトを返したいと考えています。
@SIエリック
>>> Sarah.following.all().values_list('name',flat=True)
[u'Jim', u'Ben']
>>> p = Sarah.following.all().values_list('name',flat=True)
>>> person = Person.objects.filter(user=p)
>>> print person
class Board(models.Model):
user = models.ForeignKey(User)
name = models.CharField(max_length=100)
def __unicode__(self):
return self.name