Как связать внешний ключ Django, выбранный в форме, с инлайн-формой?

Введение

Здравствуйте! Я начинающий программист-самоучка на Python/Django, работающий над Django-приложением для обслуживания грузовиков в семейном бизнесе. У меня есть некоторые основы Django и python3, но другие основы ускользают от меня, так как все, что я изучаю, было сделано ради практичности, а не построено на фундаменте этих языков.

У меня есть следующие типы моделей:

  • Truck - один грузовик
  • Service - один экземпляр услуги по ремонту/обслуживанию для одного грузовика
  • Фото - одна фотография из приложения Фотолог
  • .
  • PhotoExtended - дополнительная модель один-в-один с Photo, где она может быть связана с грузовиком и/или услугой. Фотография ВСЕГДА будет связана с грузовиком, но может быть связана или не связана с услугой.
  • .

relevant models.py:

class PhotoExtended(models.Model):

    # Link back to Photologue's Photo model.
    photo = models.OneToOneField(Photo, related_name='extended', on_delete=models.RESTRICT)
    truck = models.ForeignKey('Truck', on_delete=models.CASCADE, 
                        default = DEFAULT_TRUCK_ID, help_text="Truck in the picture.")
    service = models.ForeignKey('Service', on_delete=models.PROTECT,
                        null=True, blank=True, help_text="Service being performed or finished in the picture.")
    receipt = models.BooleanField(help_text="Is the picture for a receipt?", null=True, default=False)
    
    # Boilerplate code to make a prettier display in the admin interface.
    class Meta:
        verbose_name = u'Associated photo'
        verbose_name_plural = u'Associated photos'

    def __str__(self):
        return self.photo.title

Проблема в работе

В установленной форме администратора у меня есть красивая служебная форма с встроенной формой PhotoExtended; однако я не понял, как обновить внешний ключ PhotoExtended truck значением, выбранным в форме. Многие ответы, которые я нашел, относятся к более ранним версиям Django, поэтому обновление их до текущих спецификаций не помогло мне.

укороченный admin.py:

from django.contrib import admin
from django.utils.translation import ugettext_lazy
from django.urls import reverse
from photologue.admin import PhotoAdmin as PhotoAdminDefault, PhotoAdminForm
from photologue.models import Photo
from .models import Truck, Service, PhotoExtended

class PhotoExtendedInline(admin.StackedInline):
    model = PhotoExtended
    max_num=4
    extra=0
    can_delete = True
class PhotoAdmin(PhotoAdminDefault):
    inlines = [PhotoExtendedInline, ]
    view_on_site=False

class ServiceAdmin(admin.ModelAdmin):
...
    inlines = [
        PhotoExtendedInline,
    ]
    date_hierarchy = 'service_date'
...

Короче говоря, мне нужен способ получить доступ к информации, которая была введена в родительской форме, и использовать ее для предварительного заполнения внешнего ключа Truck во встроенной форме. Внешний ключ Service связывается автоматически, но не связывается ключ Truck.

Буду благодарен за любую помощь в решении моего вопроса. Спасибо!

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