我有两个通过多对多字段相关的模型。
class Tires(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
brand = models.CharField(max_length=50)
class Car(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
brand = models.CharField(max_length=50)
tires = models.ManyToManyField('Tires', blank=True)
当我通过管理页面向汽车添加轮胎时,它工作正常,但它在我的单元测试中不起作用,我无法弄清楚问题是什么(可能是非常简单的事情)
这是我的单位测试:
def test_many_to_many(self):
tires_1 = Tires(brand='bridgestone')
tires_1.save()
car_1 = Car(brand='BMW')
car_1.save()
car_1.tires.add(tires_1)
car_1.save()
这不会引起任何异常,但是当我打印car_1.tires时,它会显示 carthings.Tires.None 我已经尝试了相反的方法,将car_1添加到tires_1.car_set,但结果相同。我也尝试在多对多字段中添加一个不同类的对象,只是为了看看会发生什么,这确实会引发错误。所以它看起来像添加工作,但它只是不保存或什么?
答案 0 :(得分:3)
你可能正在这样做:
>> print car_1.tires
carthings.tires.None
这是“相关对象管理器”的表示。 你可能想做类似的事情:
>> print car_1.tires.all()
[<Tire 1>]
返回一个查询集,其表示更有意义,因为它实际执行查询以显示关系中的第一个元素。
顺便说一句,在为轮胎关系添加内容之后,您不需要save
模型,因为您不需要更新Cars表。