3

ManyToManyField エントリのテストを開発する際に問題が発生しています。次のような単純なブログ モデルがあります。

class Tag(models.Model):
    name = models.CharField(max_length=25)

class Entry(models.Model):

    title = models.CharField(max_length=80)
    author = models.ForeignKey(User)
    pubdate = models.DateTimeField()
    tags = models.ManyToManyField(Tag)
    text = models.TextField()

まったくの地獄のためだけに、いくつかの非常に基本的なテストを作成しました。

class EntryTests(TestCase):
    def testEntryFields(self):
        user1 = User.objects.create_user('xs', 'ln@gmail.com', 'pw')
        user1.last_name = 'H'
        user1.save()

        now = timezone.now()
        entry1 = Entry(title="Title", author=user1, pubdate=now, text="Hello")
        entry1.save()
        tag1 = entry1.tags.create(name="testtag")
        tag1.save()

        self.assertEqual(entry1.title, "Title")
        self.assertEqual(entry1.pubdate, now)
        self.assertEqual(entry1.text, "Hello")
        self.assertEqual(entry1.author, user1)
        self.assertEqual(entry1.tags.all()[0], tag1)
        self.assertEqual(tag1.name, "testtag")

これは合格ですが、ご覧のとおり、 の等価性をテストするために、いくつかの奇妙な体操 (すべてのエントリのリストを生成し、そのリストの最初で唯一のエントリを取得する) を行う必要がありましたentry1.tags。Djangoでこれを行うより良い方法はありますか?

4

1 に答える 1