django中的编辑表单在更新后不保存记录

时间:2018-02-22 16:38:50

标签: python django

我有一点问题我创建了一个编辑表单来更新现有记录。表单正确显示,但是当我单击编辑按钮更新记录时,重定向我和记录的URL不会更新。 我的 views.py 可以进行修改:

@login_required
def szczegoly_pracownik(request, id):
    link_pracownik = get_object_or_404(Cudzoziemiec, id=id)
    return render(request, 'cudzoziemiec/szczegoly_pracownik.html', {'link_pracownik': link_pracownik})

@login_required
def edycja_pracownika(request, id):
    link_pracownik = get_object_or_404(Cudzoziemiec, id=id)
    if request.method == 'POST':
        edycja_pracownika = CudzoziemiecForm(request.POST, instance=link_pracownik)
        if edycja_pracownika.is_valid():
            link_pracownik = edycja_pracownika.save(commit=False)
            link_pracownik.save()
            return render('szczegoly_pracownik', id=link_pracownik.id)
    else:
        edycja_pracownika = CudzoziemiecForm(request.user, instance=link_pracownik)
    return render(request, 'cudzoziemiec/edycja_pracownika.html', {'edycja_pracownika': edycja_pracownika})

def szczegoly_pracownika 负责显示详情视图

档案 edycja_pracownika.html

{% if request.user.is_authenticated %}
<form action="." method="post">
    {{ edycja_pracownika.as_p }}
    {% csrf_token %}
    <div class="float-right">
    <p><input type="submit" value="Edytuj" ></p>
{% endif %}

urls.py 负责详细信息查看和编辑视图

...
    path('pracownik/<id>', edycja_pracownika, name='edycja_pracownika'),
    path('pracownik/<id>/', szczegoly_pracownik, name='szczegoly_pracownik'),

也许有人知道这个错误在哪里? 编辑:

forms.py

class CudzoziemiecForm(forms.ModelForm):
    class Meta:
        model = Cudzoziemiec
        fields = ('nazwa','imie', 'nazwisko','obywatelstwo', 'data_ur','miejsce_ur','paszport','biometria', 'data_start_pasz', 'data_koniec_pasz', 'dok_pobytowy','cel_wizy', 'data_start_pobyt', 'data_koniec_pobyt')

    def __init__(self, user, *args, **kwargs):            
        super(CudzoziemiecForm, self).__init__(*args, **kwargs)
        self.fields['nazwa'].queryset = user.firma_set.all() 
        self.user = user

    def save(self, commit=True):
        instance = super(CudzoziemiecForm, self).save(commit=False)
        instance.user = self.user
        if commit:
            instance.save()
        return instance

1 个答案:

答案 0 :(得分:1)

我不会到达看到真正的问题,但我会尝试一些事情。

您对不同的网页使用相同的几乎相同的网址。这不应该是一个问题,但我认为这可能是一个陷阱。为什么不在编辑表单中使用r'^pracownik/edytuj/$'这样的内容? (对不起我试图制作波兰语网址:-))。

也许这可以避免可能的问题,并有助于澄清错误。

当你说:

  

网址重定向我

您的意思是指您再次被重定向到表单还是重定向到详细信息页面?