Django, почему он не публикуется в db?

Сделал зависимое выпадающее меню, но оно не отправляется в базу данных. Что я делаю не так?

Также, возможно ли поместить это в другую таблицу? Дело в том, что у меня есть 5 одинаковых форм на одной странице, каждая со своим OrderForm, модель подобная этой с именами от 1 до 5. Но она не будет публиковаться независимо от того, использую ли я 1 форму на странице или 5 форм на одной странице. Я бы предпочел, чтобы был способ использовать сырой sql и вставить эти данные формы в различные таблицы, отображая поля на определенные поля.

models.py

class OrderItem(models.Model):

    vendor_name = models.ForeignKey(Vendor, on_delete=models.SET_NULL, null=True)
    menu_name = models.ForeignKey(Menu, on_delete=models.SET_NULL, null=True)
    date_created = models.DateTimeField('date created', auto_now_add=True)
    note = models.CharField('note', max_length=255, null=True, blank=True)

forms.py

    class OrderForm(forms.ModelForm):
    
        note= forms.CharField(widget=forms.Textarea)
    
        class Meta:
            model = OrderItem
            fields = ('vendor_name', 'menu_name', 'note')
    
        def __init__(self, *args, **kwargs):
            super().__init__(*args, **kwargs)
            self.fields['menu_name'].queryset = Menu.objects.none()
    
            self.fields['vendor_name'].widget.attrs['style'] = 'width:250px; height:25px;'
            self.fields['menu_name'].widget.attrs['style']  = 'width:250px; height:25px;'
            self.fields['note'].widget.attrs['style']  = 'width:250px; height:100px; resize:none;'

views.py

def save_order(request):
    form = OrderForm()
    if request.method == 'POST':
        form = OrderForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect('/')
    return render(request, '/order_info.html', {'form': form})

order_info.html

<div class="">
          <form method="post" id="order_Form2" class="form2" menus-url="{% url 'ajax_load_menus' %}">
            {% csrf_token %}
            {{ form.as_p }}
            {% bootstrap_button 'Pick' button_type='submit' button_class='btn-primary btn-sm mb-2'%}
            <a class="btn btn-danger btn-sm ml-2 mb-2" href="{% url 'order-page' %}">Reset</a>
          </form>

          <script>
            $("#order_Form2 #id_vendor_name").change(function () {
              var url = $("#order_Form2").attr("menus-url");
              var vendorId = $(this).val();

              $.ajax({
                url: url,
                data: {
                  'vendor_name': vendorId
                },
                success: function (data) {
                  $("#order_Form2 #id_menu_name").html(data);
                }
              });
            });
          </script>
        </div>

load_menu.html

<option value="">---------</option>
{% for menu in menus %}
<option value="{{ menu.pk }}">{{ menu.menu_name }}</option>
{% endfor %}

url.py

urlpatterns = [
    path("order_info", views.OrderView, name="order-page"),
    path('ajax/load_menus/', views.load_menus, name='ajax_load_menus'), # AJAX\
    path('/', views.save_order, name="save_order"),
]

Ваш код django выглядит хорошо. Я думаю, что проблема в том, что вам все еще нужно добавить "type" в jquery:

      $.ajax({
            // ADD "type"
            type:'POST'
            url: url,
            data: {
              'vendor_name': vendorId
            },
            success: function (data) {
              $("#order_Form2 #id_menu_name").html(data);
            }
          });
Вернуться на верх