我为以下功能实现了ManyToManyField,该功能允许用户关注其他用户以及他们是否跟随其他用户。 他们将能够检索他们的对象。Django ManyToManyField检索两个对象错误
这是我的模块
class Person(models.Model):
user = models.ForeignKey(User)
name = models.CharField(max_length=100, blank=True)
image = models.FileField(upload_to="images/",blank=True)
following = models.ManyToManyField('self', related_name='followers', symmetrical=False, blank=True, null=True)
birthday = models.DateField(blank=True,null=True)
def __unicode__(self):
return self.name
class Board(models.Model):
user = models.ForeignKey(User)
name = models.CharField(max_length=100)
created = models.DateTimeField(auto_now_add=True)
picture = models.OneToOneField('Picture',related_name='picture',blank=True,null=True)
def __unicode__(self):
return self.name
用户是继2个用户,如果问题。我只能够检索单个用户对象而不是两个用户。
例如,我创建了3个用户,Jimmy,Sarah和Simon。萨拉是继西蒙和吉米
吉米董事会叫吉米的数学局,吉米英文局 西蒙有一个单板叫西蒙的白板
的问题是下面
>>> from pet.models import *
>>> from django.contrib.auth.models import User
>>> user = User.objects.get(username='Sarah')
>>> person = Person.objects.get(user=user)
>>> sarah = Person.objects.get(user=user)
>>> sarah.following.all() # SARAH IS FOLLOWING JIMMY AND SIMON
[<Person: Jimmy>, <Person: Simon>]
>>> users = User.objects.filter(pk__in=sarah.following.all().values_list('user__pk',flat=True))
>>> users
[<User: Jimmy>, <User: Simon>] # I'm able to retrieve their users
>>> board = Board.objects.filter(user=users) # when I search for their boards , I only retrieve a single user . Jimmy's board not Simon
>>> board
[<Board: Jimmy's Math Board>, <Board: Jimmy English Board>]
>>> person = Person.objects.filter(user=users)
>>> person
[<Person: Jimmy>]
如何取回这两个用户板?
什么'Board.objects.filter(user__in = sarah.following.all()。values_list( 'user__pk',扁=真))'return? – Ngenator 2013-03-24 02:35:58
@Ngenator这是回报[,]但当我做Board.objects.filter(用户=用户)。它只能检索吉米的董事会,而不是两个西蒙的董事会 –
donkeyboy72
2013-03-24 02:37:51
@Ngenator感谢您的编辑 – donkeyboy72 2013-03-24 02:38:15