Daily Archives: 09.02.2011
Factory-метод модели Django
Никак не мог придумать, как озаглавить статью). Просто есть две вещи, которые хотел упомянуть. Создаём метод класса, возвращающий модели класса, который может вернуть и только указанные поля всех удовлетворяющих условиям моделей.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
from django.db import models from django.contrib.auth.models import User from django.db.models import Q class Exercise( models.Model ): name = models.CharField( max_length = 255 ) is_paired = models.BooleanField( default = False ) user = models.ForeignKey( User, blank = True, null = True ) @classmethod def getExercisesForUser(cls, User, Fields = ()): query = cls.objects.filter(Q(user = None) | Q(user = User)) if Fields: query = query.only(*Fields) return query |
Здесь нужно выделить два важных момента:
1 |
cls.objects.filter(Q(user = None) | Q(user = User)) |
Здесь создаётся фильтр моделей, созданных конкретным пользователем или не относящимся ни к какому пользователю. Подробнее о …