如何让我的视图更好地保存 Django
Posted
技术标签:
【中文标题】如何让我的视图更好地保存 Django【英文标题】:How to make my view better to save Django 【发布时间】:2011-01-05 11:48:35 【问题描述】:大家对这篇文章感到抱歉,但我的应用程序需要帮助,我需要优化我的视图。我有 5 个模型,我该怎么做?
def save(request):
# get the request.POST in content
if request.POST:
content = request.POST
dicionario =
# create a dict to get the values in content
for key,value in content.items():
# get my fk Course.objects
if key == 'curso' :
busca_curso = Curso.objects.get(id=value)
dicionario.update(key:busca_curso)
else:
dicionario.update(key:value)
#create the new teacher
Professor.objects.create(**dicionario)
我的问题是?
1 - 我如何以通用方式执行此功能?我可以在 %s 中传递一个变量来创建和 得到?喜欢这样吗?
foo = "Teacher" , bar = "Course"
def save(request, bar, foo):
if request post:
...
if key == 'course' :
get_course = (%s.objects.get=id=value) %bar
...
(%s.objects.create(**dict)) %foo ???
在我看来,我尝试过这样做,但不起作用 =/,有人可以帮我完成这项工作吗?谢谢
【问题讨论】:
【参考方案1】:您应该使用ModelForms,而不是手动执行所有这些操作。这样您就可以简单地创建一个表单,该表单将在调用 save()
时自动创建您的对象。
例子:
class ProfessorForm(ModelForm):
class Meta:
model = Professor
def save(request):
if request.method == 'POST':
form = ProfessorForm(request.POST)
if form.is_valid():
form.save()
【讨论】:
【参考方案2】:由于您拥有多个这些表单,因此您实际上需要表单集:http://docs.djangoproject.com/en/dev/topics/forms/formsets/
文档在描述如何将带有查询集的表单一起放入表单集以一次编辑多个内容方面做得非常出色:)
【讨论】:
以上是关于如何让我的视图更好地保存 Django的主要内容,如果未能解决你的问题,请参考以下文章