Форма Django не заполняется данными POST

Я относительно новичок в Django, поэтому надеюсь, что это довольно простой вопрос. Я нахожу отладку сложной и, возможно, это часть моей проблемы.

Проблема: Форма Django, кажется, не заполняется данными из поста.

Summary: У меня есть 2 модели Entities и Breaks. Breaks имеет FK отношение к entity_id (не PK) на Entities модели.

Я хочу сгенерировать пустую форму для всех полей таблицы Breaks. Генерация базовой формы заполняет все пустые поля, но для FK генерирует выпадающий список всех PK таблицы Entities. Это не помогает, поэтому я исключил это в ModelForm ниже и попытался заменить списком всех entity_ids из Entities таблицы. Эта форма отображается так, как ожидалось.

class BreakForm(ModelForm):   
    class Meta:
        model = Breaks
        #fields = '__all__'
        exclude = ('entity',)
    
    def __init__(self, *args, **kwargs):        
        super(BreakForm, self).__init__(*args, **kwargs)         
        self.fields['entity_id'] = ModelChoiceField(queryset=Entities.objects.all().values_list('entity_id', flat=True))    

Нижеприведенный FormView является cbv, вызываемым по URL. Если я заполню форму и для FK столбца entity_id выберу одно из значений, то форма не будет отправлена. По этому полю в шаблоне формы появляется следующее сообщение Выберите правильный выбор. Этот выбор не является одним из доступных вариантов.

class ContactFormView(FormView):
    template_name = "breaks/test/breaks_form.html"
    form_class = BreakForm

Мои первоначальные мысли были либо о том, что тип данных этого поля (string/integer) неверен, либо о том, что Django нужен PK строки в таблице Entities (по какой-либо причине).

Итак, я добавил функцию post в FormView и увидел, что request.body заполняется правильно. Однако я не могу понять, как заполнить это в ModelForm и сохранить в базе данных, или преодолеть проблему, упомянутую выше.

Любая помощь будет очень признательна

В Django объект запроса, передаваемый в качестве параметра вашему представлению, имеет атрибут "method", где задается тип запроса, и все данные, переданные через POST, могут быть доступны через request. POST-словарь. Представление отобразит результат работы формы входа в систему, размещенной через loggedin. html.

Я думаю, что ваша проблема состоит из двух частей, во-первых, неправильно отображается выпадающий список, а во-вторых, форма не сохраняется. Для первой проблемы вам не нужно делать никаких изменений в наборе запросов ModelChoiceField, вместо этого добавьте to_field_name:

class BreakForm(ModelForm):   
    class Meta:
        model = Breaks
        #fields = '__all__'
    
    def __init__(self, *args, **kwargs):        
        super(BreakForm, self).__init__(*args, **kwargs)         
        self.fields['entity_id'] = ModelChoiceField(queryset=Entities.objects.all(), to_field_name='entity_id')

Во-вторых, если вы хотите сохранить форму, вместо FormView используйте CreateView:

class ContactFormView(CreateView):
    template_name = "breaks/test/breaks_form.html"
    form_class = BreakForm
    model = Breaks
Вернуться на верх