먼저 모델 관리자를 사용할 수 있습니다. 다음과 비슷한 모양이어야합니다.
managers.py
from django.db import models
class Visited(models.Manager):
def on_day(self, user, date):
qs = self.model.objects.filter(user=user, visited_at=date)
return qs
models.py
from django.db import models
from .managers import Visited
class Visits(models.Model):
user = models.ForeignKey(User)
visited_at = models.DateTimeField()
objects = models.Manager()
visited = Visited()
def __unicode__(self):
return "{}-{}".format(self.user, self.visited_at)
간단히 :
(이 테스트되지 않은, 당신은 검색어 세트와 혼란에있을 수 있습니다)
user
및
date
정보를 반환해야합니다. 희망하는
User
세트. 이 그것에 대해 알아 보려면 작정이지만, 이것이 내가 그것에 대해 가고 싶어 방법 일반적이기 때문에, 희망 누군가가 문서에 적절한 뭔가를 쓸 수있는 테스트로
:
빠른을 유지하는 --keepdb
하여 테스트 tests.py
import datetime
from django.test import TestCase
class TestData(TestCase):
yesterday = datetime.date.today() - datetime.timedelta(days=1)
@classmethod
def setUpTestData(cls):
cls.User1 = User.objects.create(
name="Anon1"
)
cls.User2 = User.objects.create(
name="Anon2"
)
cls.Visit1 = Visits.objects.create(
user=cls.user1,
visited_at=self.yesterday,
)
cls.Visit2 = Visits.objects.create(
user=cls.user2,
visited_at=datetime.date(2016,7,28),
)
cls.Visit3 = Visits.objects.create(
user=cls.user2,
visited_at=datetime.date(2016,8,1),
)
class SalesRecordTest(TestData):
def test_varieties_sold(self):
self.assertQuerysetEqual(Visits.visited.on_day(self.yesterday, self.user), ["<User: Anon1>"])
self.assertNotIn("Anon2", str(Visits.visited.on_day(self.yesterday, self.user)))
플래그입니다. 나는 언제나 --keepdb
을 사용하는 것이 어떤 단점도 발견하지 못했다. 필요할 때마다 데이터베이스를 업데이트하는 것으로 보인다.
시작하기에 충분합니다. 행운과 행복 테스트!