Django: Атомарное чтение нескольких полей модели
У меня есть следующие модели Django и простая функция, которая обращается к базе данных:
class Shape(models.Model):
    color = models.CharField()
    name = models.CharField()
class Point(models.Model):
    x = models.FloatField()
    y = models.FloatField()
    shape = models.ForeignKey(Shape, on_delete=models.CASCADE, related_name="points")
def some_access(id):
    shape = Shape.objects.get(pk=id)
    return shape.color, shape.name, list(shape.points.all())
Мои вопросы следующие:
- В fn - some_access: Являются ли значения- color,- nameи- pointsсчитываются в одной и той же sql-транзакции? Если нет, то может возникнуть гонка условие (чтение формы, изменение записи базы данных в другом месте, чтение точек)
- Если нет, то как я могу добиться того, чтобы доступ к различным атрибутам (на одной модели или на объекте с внешним ключом - например, значения x и y точек) считывались атомарно? 
- Если используется transaction.atomic. Означает ли это, что она блокирует базу данных и выполняет множественные обращения к базе данных, что может вызвать проблему n+1? 
 Единственное, что я могу придумать для вопроса 2, это обернуть все в transaction.atomic.