Поле 'id' ожидало число, но получило (что-то с Id)

Django 3.2.6

class FeedbackForm(CreatedMixin,
                   CommentMixin,
                   FlagMixin,
                   models.Model):
    name = models.CharField(blank=False,
                            default="",
                            null=False,
                            unique=False,
                            max_length=500,
                            verbose_name=gettext("Name:"))

    email = models.EmailField(blank=True,
                              default="",
                              null=False,
                              unique=False,
                              verbose_name=gettext("Email:"))

    phone = PhoneField(blank=True,
                       default="",
                       null=False,
                       unique=False,
                       verbose_name=gettext("Phone:"))

    message = models.TextField(blank=False,
                               default="",
                               null=False,
                               verbose_name=gettext("Message:"))

    def __str__(self):
        return f"{self.name}_{self.email}_{self.phone}"


class FeedbackForm(ModelForm):
    class Meta:
        exclude = [OmnibusNames.COMMENT.value,
                   OmnibusNames.FLAG.value,
                   OmnibusNames.CREATED.value,]
        model = FeedbackForm


class FeedbackFormView(FormView):
    template_name = 'feedback_forms/feedback_form.html'
    form_class = FeedbackForm


class FeedbackFormResult(View):
    def post(self, request, *args, **kwargs):
        feedback_form_model = apps.get_model(app_label="feedback_forms", model_name="FeedbackForm")
        new_feedback = feedback_form_model(request.POST)
        new_feedback.save()

        return render(request, template_name="feedback_forms/feedback_form.html")


<form id="subscription-form" onsubmit="return false">
    {% csrf_token %}
    {{ form.as_p }}
    <input type="submit" value="Submit">
</form>

Проблема:

{TypeError}Field 'id' expected a number but got <QueryDict: {'csrfmiddlewaretoken': ['W8wfxQvsmQyElPtsdmJFiDJmzbyKZXRYfZS9TAbFGpNZDo22jWaLotUrllHYsDWi'], 'name': ['John'], 'email': ['tad@gmail.com'], 'phone_0': ['+19617828635'], 'phone_1': [''], 'message': ['ddd']}>.

Хм. Что-то с id. Но я думал, что Id автоматически увеличивается. Не могли бы вы мне помочь?

Только форма может обрабатывать request.POST, поэтому вы должны создать не модель с request.POST, а форму:

from app_name.forms import FeedbackForm
from django.shortcuts import redirect, render

class FeedbackFormResult(View):
    def post(self, request, *args, **kwargs):
        form = FeedbackForm(request.POST, request.FILES)
        if form.is_valid():
            form.save()
            return redirect('name-of-some-view')
        return render(request, 'name-of-some-template.html', {'form': form})

Я бы настоятельно рекомендовал не давать модели и форме одно и то же имя, это все равно не имеет особого смысла.

Кроме того, возможно, имеет смысл работать с FormView [Django-doc], который будет реализовывать большую часть шаблонной логики.

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