まず、モデルマネージャを使用することができます。次のようなものになります。
(これはテストされていない、あなたはクエリセットを台無しに必要がある場合があります):
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
を使用するだけでは不都合がないことがわかりました。必要なときにいつでもデータベースを更新するようです。
これで十分です。幸運と幸せなテスト!