Доступ к объекту RelatedManager в django
У меня есть следующая модель :
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()
. Отсюда у вас будет QuerySet, который вы можете итерационно просмотреть, чтобы получить каждую секцию mysection и получить доступ к расстоянию из нее.
RelatedManagers - это менеджеры, они просто имеют дополнительную функциональность. Это сбивает с толку, потому что существуют также QuerySets, которые похожи на Managers, за исключением того, что в них уже хранится запрос.