2010-11-26 21 views
5

Yapım yapıyorum site "yayınları" oluşturmanıza ve Twitter benzeri bir takip edilen kullanıcı kavramına sahip olmasını sağlar. Belirli bir kullanıcı için, tüm yayınları takip ettikleri kullanıcılardan göstermek istiyorum. İşteBir Django ManyToManyField ilişkisi tarafından tanımlanan tüm nesneleri alın

benim basitleştirilmiş modeller vardır:

class User 
    # a standard django.contrib.auth user model 

class UserProfile(models.Model): 
    # my AUTH_PROFILE_MODULE for django-profiles 
    user = models.ForeignKey(User, unique=True) 
    following = models.ManyToManyField('self', symmetrical=False, related_name="followed_by") 

class Posts(models.Model): 
    user = models.ForeignKey(User) 
    post = models.TextField() 

Soru: nasıl belirli bir kullanıcı ilerlemekte olduğunun Kullanıcılardan tüm Mesaj nesnelerin Sorgu Kümesi oluşturabilirim?

Ben, UserProfile'daki "follow" ilişkisini oluşturarak daha karmaşık hale getirdiğimi düşünüyorum, bu Post ile ForeignKey ilişkisi olan model değil.

UPDATE! İşte yanıtı:

Posts.objects.filter(user__userprofile__in=UserProfile.objects.get(user=your_user_object).following.all()) 

cevap

7
Posts.objects.filter(user__in=UserProfile.objects.get(user=your_user_object).following) 
+0

Bir TypeError alıyorum: 'ManyRelatedManager' nesne iterable değil – mitchf

+0

ah, ben unuttum. "Takip eden" ifadesinden sonra, "UserProfile.objects.get (user = your_user_object) .following.all()" gibi .all() öğesini ekleyin. Eğer işe yaramazsa, onu follow.objects.all() olarak değiştirin. Tam olarak hatırlamıyorum. – werehuman

+0

Teşekkürler, bu TypeError düzeltildi, ancak boş bir set dönerken hala bir şey doğru değil. – mitchf

İlgili konular