【发布时间】:2018-03-19 08:29:50
【问题描述】:
我是 Django 新手,不明白到底是什么原因造成的:
我有一个模型公司,它有一个 OneToOneField,创建者。
# models.py
class Company(models.Model):
class Meta:
verbose_name = 'Company'
verbose_name_plural = 'Companies'
creator = models.OneToOneField(User, related_name="company", on_delete=models.CASCADE, unique=False, null=True)
name = models.CharField(max_length=50)
我有一个 TemplateView 类来处理创建公司模型的获取和发布请求:
# views.py
class create_company(TemplateView):
def get(self, request):
form = CompanyCreateForm()
title = "Some form"
return render(request, "form.html", {"form": form, "title": title})
def post(self, request):
form = CompanyCreateForm(request.POST)
if form.is_valid():
comp = form.save(commit=False)
comp.creator = request.user
comp.save()
return redirect('index')
当我提交时,表单也正确显示,我面临的问题是 base.html 我显示 {% user.company %};表单模板将其扩展为:
{% extends "account/base.html" %}
{% load crispy_forms_tags %}
{% block content %}
<div class="container">
<form method="post" action="">
{% csrf_token %}
{{form|crispy}}
<button class="btn btn-success" type="submit">Save</button>
</form>
<br>
</div>
<br>
{% endblock %}
在base.html中我访问
{% if user.is_authenticated %}
{% user.company %}
{% endif %}
但是 user.company 即使设置了也没有显示;它仅在我重定向到索引时显示,但在我呈现表单时不显示。
有人可以帮我了解这是什么原因吗?
【问题讨论】:
标签: python django django-models django-forms