- Author:
- grahamu
- Posted:
- February 28, 2007
- Language:
- Python
- Version:
- Pre .96
- Score:
- 0 (after 0 ratings)
Snippet #2 demonstrated some cool tricks possible with manager methods. This example shows how to assign and use a custom manager method.
In this snippet the belongs_to_user
method returns an Account queryset containing only those accounts associated with the specified user. The method is useful because it hides the implementation of User in the Account model.
Line 17 associates the custom manager with the Account model.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | from django.db import models
from django.contrib.auth.models import User
################ models ####################
class AccountManager(models.Manager):
def belongs_to_user(self, user=None):
qs = super(type(self), self).get_query_set()
if user:
return qs.filter(users__username=user)
else:
return qs
class Account(models.Model):
title = models.CharField(maxlength=30, blank=False)
users = models.ManyToManyField(User, blank=True, null=True)
objects = AccountManager()
################ views ####################
def user_accounts(request):
user_acct_qs = Account.objects.belongs_to_user(request.user.username)
|
More like this
- Template tag - list punctuation for a list of items by shapiromatron 10 months, 1 week ago
- JSONRequestMiddleware adds a .json() method to your HttpRequests by cdcarter 10 months, 2 weeks ago
- Serializer factory with Django Rest Framework by julio 1 year, 5 months ago
- Image compression before saving the new model / work with JPG, PNG by Schleidens 1 year, 6 months ago
- Help text hyperlinks by sa2812 1 year, 6 months ago
Comments
The first line of belongs_to_user() would be better as:
#
Please login first before commenting.