python - 在django中访问RelatedManager对象

标签 python django django-models django-related-manager

我有以下模型:

class Travel(models.Model):
    purpose = models.CharField(max_length=250, null=True)
    amount = models.IntegerField()
class TravelSection(models.Model):
    travel = models.ForeignKey(Travel, related_name='sections', on_delete=models.CASCADE)
    isRoundTrip = models.BooleanField(default=True)
    distance = models.FloatField()
    transportation = models.CharField(max_length=250)

我在不使用数据库的情况下创建对象:

mytravel = Travel(
  purpose='teaching',
  amount=1
)
mysection = TravelSection(
  travel=mytravel,
  isRoundTrip=True,
  distance=500,
  transportation='train'
)

当我尝试访问 mytravel.sections 时,我无法访问字段 distance 和其他字段。我怎样才能做到这一点而不需要保存在数据库中?我不想在数据库中创建对象,因为我正在尝试进行一些预处理。

最佳答案

将管理器视为查询构建器。经理无权访问任何特定实例的单独值,您必须使用RelatedManager 的方法来获取QuerySet,例如mytravel.sections.all()。从那里您将拥有一个查询集,您可以迭代该查询集以获取每个 mysection 以及从那里的访问距离。

RelatedManagers 是管理者,他们只是有额外的功能。现在这很令人困惑,因为还有类似于管理器的查询集,只不过它们已经存储了查询。

关于python - 在django中访问RelatedManager对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72571420/

相关文章:

python - Django 过滤器 "less than"日期时间无法正常工作

带有 Django 1.7 迁移的 Python 2.7 未绑定(bind)方法

python - 用于 python 脚本的 iTunes API

python - 检查值是否在列表列表中并检索元素索引的高效算法

python - 使用 Django 将 Assets 通过管道传输到 CDN 的最佳方式是什么?

python - django 模板帮助,颠倒

python - 在 Google App Engine 上过滤和排序音乐信息

python - Django 按组保留一个元素,然后在此查询集上使用属性

python - 包含 100000 个元素的列表上的奇怪行为

python - 我无法将默认的 Python 版本从 Apple 提供的 2.7.2 更改为 3.2.2 (OS10.7)