如何让我的视图更好地保存 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的主要内容,如果未能解决你的问题,请参考以下文章

在视图中使用 Class of Def 更好

django自定义用户视图?

我如何在 django 的同一视图功能中将最近保存的数据发送到模板中

在 django 中使用自定义类视图让我出错

如何在 django 中进行复杂的搜索?使用视图还是模型?

如何将我在视图中获得的一些信息保存到模型中的一个字段中 - django