Отправить значение свойства модели в другую модель и отобразить его в ее форме

Я работаю над приложением, где пользователь заполняет первую форму модели, и он будет перенаправлен на следующую форму, где я хочу получить значение из свойства первой модели, которое будет передано второй модели и отобразить его в ее форме.

Есть ли способ получить экземпляр доставки в DetailleDelivery (ключ счета и расстояние) и отобразить их пользователю, когда он заполняет DeliveryDetailsForm? Я хочу избежать многократного обращения к БД для получения одних и тех же данных, если это возможно.

В вашей DetailsDeliveryCreateView задайте начальные значения формы:

def get_initial(self):
    initial = super(DetailsDeliveryCreateView, self).get_initial()
    initial = initial.copy()
    delivery = Delivery.objects.get(id=self.kwargs["pk"])
    distance = delivery.distance["google_distance"]
    initial['distance'] = delivery
    initial['distance'] = distance
    return initial

Вы можете просто передать доставку в контекст, например, так:

context ['delivery'] = delivery

Затем в своем шаблоне вы можете использовать {{delivery.distance}} и все остальное, что вам нужно. У вас будет весь объект.

Очевидно, что это относится только к представлению create, где связанный родительский объект еще не существует. В детальном представлении вы имеете доступ к родителю через дочерний объект.

Также вы можете использовать get_object_or_404 вместо filter для получения экземпляра Delivery, на случай, если кто-то попытается использовать несуществующий pk.

Более того, вместо того, чтобы вставлять доставку в форму, просто оставьте ее совсем и переопределите form_valid(), чтобы вставить отношения доставки до сохранения, если это имеет смысл.

Вернуться на верх