2016-05-14 57 views
0

有人可以解釋如何過濾用戶帖子,如果用戶是用戶或不是?'QuerySet'對象沒有屬性'subs'

'查詢集' 對象有沒有屬性 '潛艇'

我使用自定義用戶

class Every(AbstractBaseUser): 
    user = models.OneToOneField(settings.AUTH_USER_MODEL, unique=True) 
    name = models.CharField(max_length=30, blank=True) 

這是樁模型:

class Post(models.Model): 
    user = models.ForeignKey(User, blank=True, null=True) 
    text = models.TextField(max_length=1200) 

訂戶模型:

class Sub(models.Model): 
    user = models.OneToOneField(User, related_name='user') 
    subs = models.ManyToManyField(User, blank=True, related_name='subs') 

視圖t我正在嘗試使用的帽子:

def tape(request, every_id): 
    context = {} 
    context.update(csrf(request)) 
    post_form = PostForm 
    pform = post_form 
    sub = Sub.objects.filter(subs=every_id)# here I get users that intersting for my user 
    tape = Post.objects.filter(user=sub.subs).order_by("-timestamp") 
    username = request.user 
    context = {"username": username, "pform": pform, "tape": tape, "sub": sub,} 
    return render(request, 'tape.html', context) 
+0

這是什麼''every_id? – Anoop

+0

every_id是用戶的附加模型的標識。 ''每個(AbstractBaseUser):''' '這裏我可以添加地址,愛好,名字...... –

回答

1

實際上最好使用類視圖。但這是一個普通觀點的答案。我們需要得到訂購的和用戶的IDS,然後纔開始過濾帖子

這裏更甚至有點:-)

def get_user_id_list(user): 
    """Returns a list of subscribers's ids""" 
    try: 
     sub = user.user 
    Sub.DoesNotExist: 
     return [] 
    return sub.subs.all().values_list('user_id', flat=True) 


def get_user_id_list_2(user): 
    """Returns a list of subscription's ids""" 
    return user.subs.values_list('user_id', flat=True) 


def tape(request): 
    pform = PostForm 
    user_id_list = get_user_id_list_2(request.user) 
    logger.info('user_id_list = {}'.format(user_id_list)) 
    tape = Post.objects.filter(user_id__in=user_id_list).order_by("-timestamp") 
    username = request.user 
    context = { 
     "username": username, 
     "pform": pform, 
     "tape": tape, 
     "sub": sub, 
    } 
    return render(request, 'tape.html', context) 
相關問題