Как предоставить начальные данные для ForeignKey в ModelFormSet?

У меня есть эта штука.

enter image description here

Вот отношения моих моделей

Для определения события у вас есть Place, QR Link и ImageAlbum, который имеет до пяти Images.

Событие может иметь или не иметь Место

В событии ДОЛЖНО присутствовать главное изображение, которое отмечается атрибутом main в форме Image.

Все формы находятся на одной странице, все они обрабатываются одним Submit

Теперь мои проблемы начинаются и заканчиваются в отделе форм, у меня есть несколько типовых форм:

#FORMS FILE

class EventForm(ModelForm):
    date_time_start = forms.DateTimeField(input_formats=["%Y-%m-%d"],  required=True, widget=forms.DateTimeInput(format="%Y-%m-%d", attrs={"id": "cal_start", "placeholder": "yyyy-mm-dd"}))
    has_place = forms.BooleanField()

    class Meta:
        model = Event
        fields = ['title', 'subtitle', 'phrase', 'date_time_start', 'prices', 'has_place']
    
class BaseImageFormSet(BaseModelFormSet):
        
    def clean_main(self):
        """Checks that there is only one main image"""
        if any(self.errors):
            return
        boolean_arr = []
        for form in self.forms:
            if self.can_delete and self._should_delete_form(form):
                continue
            main_data = form.cleaned_data.get('main')
            main = main_data if main_data is not None else False
            if sum(boolean_arr) > 1:
                raise ValidationError('There can only be one main image.')
            boolean_arr.append(main) 
            
class PlaceForm(ModelForm):
    class Meta:
        model = EventPlace
        exclude = ['uuid', 'event'] 

class QRForm(ModelForm):
    
    class Meta:
        model = EventQR
        exclude = ['uuid', 'event']

Моя головная боль связана с изображениями, я должен сделать ModelFormSet изображений, но я должен сначала создать альбом, который связывает изображения с событием.

Вот мои взгляды:

Как бы вы сохранили изображения?

И все событие с его зависимостями.

Помогите пожалуйста, я уже застрял

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