表单未在Django Admin上注册
我在个人资料页面上有两个表单,当我提交它们时,它成功地提交了表单,但没有在管理员上注册。我该怎么办?我已经开发这个应用程序一个多月了,但仍停留在70% 我的模型是:表单未在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
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'),
]