2012-12-25 17 views
5

Wie erreiche ich die folgende ....Django Modell: Filterung nach Benutzer, immer

Jedes Mal, wenn die Punkte Objekt in einer Vorlage angezeigt wird, muss es immer vom aktuellen Benutzer gefiltert werden. Also, innerhalb des Modells habe ich den folgenden Code ausprobiert.

Ist das möglich? Wie kann ich das oben genannte erreichen?

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() 

Antwort

11

können Sie sicherstellen, dass Ihre Ansichten, die ein Benutzer unter Verwendung

@login_required Dekorateur

dann könnte man für die Punkte durch den Benutzer in Ihrer Ansicht nicht abfragen

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

oder umgekehrt FK lookup

request.user.points_set.all()

mit