Как сделать мой взгляд лучше, чтобы спасти Джанго - PullRequest
0 голосов
/ 05 января 2011

Привет, ребята, извините за этот пост, но мне нужна помощь с моим приложением, мне нужно оптимизировать мой взгляд.У меня есть 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 ]

3 голосов
/ 05 января 2011

Вместо того, чтобы делать все это вручную, вы должны использовать 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()
0 голосов
/ 06 января 2011

Поскольку у вас более одной из этих форм, вам действительно нужны наборы форм: http://docs.djangoproject.com/en/dev/topics/forms/formsets/

Документы проделывают фантастическую работу, описывая, как объединить форму с набором запросов в набор форм, чтобы редактировать большечем одна вещь одновременно:)

...