gpt4 book ai didi

python - 为具有多对多关系的 Django 模型编写测试

转载 作者:行者123 更新时间:2023-11-28 21:22:17 24 4
gpt4 key购买 nike

我想为具有多对多关系的 Django 模型编写测试,但出现此错误:

ValueError: "< Tour: tour >" needs to have a value for field "id" before this many-to-many relationship can be used.

我的测试:

class ModelTestCase(TestCase):
def setUp(self):
self.mock_file = mock.MagicMock(File)
self.mock_file.name = 'MockFile'
self.before_count = Tour.objects.count()
self.tour_agency = TourAgency.objects.create(
name='agency',
username='agency')
self.tour_category = TourCategory.objects.create(name='category')
self.tour_equipment = TourEquipment.objects.create(name='equipment')
self.tour_leader = TourLeader.objects.create(
name='leader',
email='leader@sample.com',
username='leader',
bio='sample text',)
self.tour_tag = TourTag.objects.create(name='tag')

def test_model_can_create_tour(self):
self.tour = Tour.objects.create(
name='tour',
description='description',
summary='summary',
agency=self.tour_agency,
equipment=self.tour_equipment,
category=self.tour_category,
tags=self.tour_tag,
activity_type='activity type',
date=datetime.now,
photo=self.mock_file)
self.tour.save()
self.tour.save_m2m()
count = Tour.objects.count()
self.assertNotEqual(self.before_count, count)

我将尝试使用 .save() 保存对象,但它不起作用。

最佳答案

在添加多对多关系之前,您首先需要保存游览模型。查看代码我认为多对多是字段“标签”

def test_model_can_create_tour(self):
self.tour = Tour.objects.create(
name='tour',
description='description',
summary='summary',
agency=self.tour_agency,
equipment=self.tour_equipment,
category=self.tour_category,
activity_type='activity type',
date=datetime.now,
photo=self.mock_file)

# Adding the tour later.
self.tour.tags.add(self.tour_tag)
count = Tour.objects.count()
self.assertNotEqual(self.before_count, count)

这应该可以通过测试。

关于python - 为具有多对多关系的 Django 模型编写测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48706447/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com