如何让我的观点更好地保存Django

时间:2011-01-05 11:48:35

标签: django function save django-views

Hy家伙很抱歉这篇文章,但我需要帮助我的应用程序,我需要优化我的观点。我有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 ???

我尝试在我的视图中执行此操作但不起作用= /,有人可以帮我完成这项工作吗?感谢

2 个答案:

答案 0 :(得分:3)

不要手动完成所有操作,而应使用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()

答案 1 :(得分:0)

由于您有多个这些表单,因此您实际上需要表单集:http://docs.djangoproject.com/en/dev/topics/forms/formsets/

文档在描述如何将带有查询集的表单一起放入formset中以便一次编辑多个内容方面做得非常出色:)