首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多到多的Django不是在单位中工作,而是在管理中工作

多到多的Django不是在单位中工作,而是在管理中工作
EN

Stack Overflow用户
提问于 2016-04-29 08:02:48
回答 1查看 411关注 0票数 1

我有两个模型通过一个多到多的领域相关。

代码语言:javascript
复制
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)

当我通过管理页面将轮胎添加到汽车上时,它工作得很好,但在我的单元测试中不起作用,我也不知道问题出在哪里(可能是非常简单的事情)。

这是我最拿手的:

代码语言:javascript
复制
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中,但结果是相同的。我还尝试在多到多字段中添加一个不同类的对象,只是为了看看会发生什么,这确实会引发一个错误。所以它看起来像加法工作,但它只是没有保存或其他什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-29 08:13:12

你可能是这样做的:

代码语言:javascript
复制
>> print car_1.tires
carthings.tires.None

它是“相关对象管理器”的表示形式。你可能想做这样的事情:

代码语言:javascript
复制
>> print car_1.tires.all()
[<Tire 1>]

它返回一个查询集,它的表示更有意义,因为它实际上执行了一个查询,以显示关系中的第一个元素。

顺便说一句,您不需要在添加一些轮胎关系后save模型,因为您不需要更新Cars表。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36932864

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档