表单未在Django Admin上注册

表单未在Django Admin上注册,django,django-models,django-forms,Django,Django Models,Django Forms,我在个人资料页面上有两个表单,当我提交它们时,它成功地提交了表单,但没有在管理员上注册。我该怎么办?我已经开发这个应用程序一个多月了,但仍停留在70% 我的模型是: class Translate(models.Model): title = models.CharField(max_length=255) body = models.CharField(max_length=10000) class Meta: verbose_name = "tran

我在个人资料页面上有两个表单,当我提交它们时,它成功地提交了表单,但没有在管理员上注册。我该怎么办?我已经开发这个应用程序一个多月了,但仍停留在70%

我的模型是:

class Translate(models.Model):
    title = models.CharField(max_length=255)
    body = models.CharField(max_length=10000)

    class Meta:
        verbose_name = "translation"
        verbose_name_plural = "translations"

        def __str__(self):
            return self.title

class Narrate(models.Model):
    title = models.CharField(max_length=255)
    body = models.CharField(max_length=10000)

    class Meta:
        verbose_name = "narration"
        verbose_name_plural = "narrations"

        def __str__(self):
            return self.title
现在在my views.py上,它的结构是这样的,因为它在一个页面上有两个表单。在我的情况下使用基于类的视图还是基于函数的视图更好

class ProfilePageView(TemplateView):
    template_name = 'profile.html'

    def get(self, request, *args, **kwargs):
        add_narration = NarrateForm(self.request.GET or None)
        add_translation = TranslateForm(self.request.GET or None)
        context = self.get_context_data(**kwargs)
        context['add_narration'] = add_narration
        context['add_translation'] = add_translation
        return self.render_to_response(context)

class NarrateFormView(FormView):
    form_class = NarrateForm
    template_name = 'profile.html'

        def post(self, request, *args, **kwargs):
            add_narration = self.form_class(request.POST)
            add_translation = TranslateForm()
            if add_narration.is_valid():
                add_narration.save()
                return self.render_to_response(
                    self.get_context_data(
                        success=True
                    )
                )
            else:
                return self.render_to_response(
                    self.get_context_data(
                        add_narration=add_narration,
                    )
                )

def submittedView(request):
    return render(request, 'submission.html')

class TranslateFormView(FormView):
    form_class = TranslateForm
    template_name = 'profile.html'

    def post(self, request, *args, **kwargs):
        add_translation = self.form_class(request.POST)
        add_narration = NarrateForm()
        if add_translation.is_valid():
            add_translation.save()
            return self.render_to_response(
                self.get_context_data(
                    success=True
                )
            )
        else:
            return self.render_to_response(
                self.get_context_data(
                    add_translation=add_translation,
                )
            )

def submittedView(request):
    return render(request, 'submission.html')
我的forms.py就是这样实现的

class NarrateForm(ModelForm):
class Meta:
    model = Narrate
    fields = [
        'title',
        'body',
    ]

class TranslateForm(ModelForm):
    class Meta:
        model = Translate
        fields = [
            'title',
            'body',
        ]
这是profile.html和url.py上的表单

<form method="POST" action="{% url 'submitted' %}">{% csrf_token %}
    {{ add_narration }}
<button type="submit" name="submit" value="Send Narration" class="waves-effect waves-light btn submit-button light-blue mt-30">Submit Narration</button>
</form>
<form method="POST" action="{% url 'submitted' %}">{% csrf_token %}
    {{ add_narration }}
<button type="submit" name="submit" value="Send Narration" class="waves-effect waves-light btn submit-button light-blue mt-30">Submit Narration</button>
</form>

为每个表单的两个视图添加url模式,即TranslateFormView和DescriptionFormView


并更改每个表单上的操作属性,使其指向这两个URL。

您能重新表述“不注册”吗?这对Django有着特定的含义,但不清楚这是否与此相关。您显示了很多视图,因此不清楚在提交表单时使用了哪个视图。您如何知道它已成功提交?例如,如果你在add_description.save一行设置了一个断点,你是否点击了该行,即你是否确定表单正在保存?@MatthewGaiser我的意思是,当我提交表单时,它不会显示在管理员上。第三,你确定表单甚至正在提交到descriptionFormView?请显示您的profile.html和URL.py。您正在将表单发布到submittedView,该视图只提供submission.html模板。为什么你希望你的表格会被保存?为什么操作={%url'提交了“%}?好的。然后我添加{%if form.is_submitted%}谢谢消息

对吗?如果成功提交,上下文变量称为success,因此您需要使用{%if success%}{%if success%}感谢提交{%else%}重试,对吗?
urlpatterns = [
    path('', home, name='home'),
    path('about/', AboutView.as_view(), name='about'),
    path('volunteers/', VolunteerView.as_view(), name='volunteers'),
    path('profile/', ProfilePageView.as_view(), name='profile'),
    path('submitted/', submittedView, name='submitted'),
]