2012-12-25 15 views
5

Come posso raggiungere il seguente ....modello di Django: Filtraggio per utente, sempre

Ogni volta che l'oggetto punti viene visualizzato in un modello deve sempre essere filtrato dall'utente corrente. Quindi, all'interno del modello ho provato il codice qui sotto.

È possibile? come posso ottenere quanto sopra?

Models.py

from django.db import models 
from django.contrib.auth.models import User 


POINTS_PENDING, POINTS_ADDED, POINTS_DEDUCTED, ORDER_PROCESSING = range(4) 
STATUS_OPTIONS = (
    (POINTS_PENDING, ('Pending')), 
    (POINTS_ADDED, ('Added')), 
    (POINTS_DEDUCTED, ('Deducted')), 
    (ORDER_PROCESSING, ('Processing')), 
    ) 


class PointsManager(models.Manager): 

    def points_list(self,User): 
     list = Points.objects.filter(points_user=User).exclude(status=ORDER_PROCESSING) 
     return list 


class Points (models.Model): 
    user = models.ForeignKey(User) 
    points = models.IntegerField(verbose_name=("Points"), default=0) 
    created = models.DateTimeField(("Created at"), auto_now_add=True) 
    updated = models.DateTimeField(verbose_name=("Updated at"), auto_now=True) 

    objects = PointsManager() 

risposta

11

si potrebbe garantire che le vostre opinioni hanno un utente utilizzando

@login_required decoratore

allora si potrebbe potrebbe interrogare per i punti dall'utente nella vista

user_points = Points.objects.filter(user=request.user)

o usando la marcia indietro FK lookup

request.user.points_set.all()

Problemi correlati