我有以下模型:
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/