0

视图.py

def save_report(request):
    form = ReporterRegisterForm()
    profileform = ProfilecontactForm()
    user = request.user
    userprofile = UserProfile.objects.get(user=user)
    if request.method == 'POST':        
        id = request.POST.get('id')
        user = User.objects.get(pk=id)        
        userprofile = UserProfile.objects.get(user=user.id)
        form = ReporterRegisterForm(request.POST, instance=user) 
        profileform = ProfilecontactForm(request.POST,instance = userprofile)
        if form.is_valid() and profileform.is_valid(): 
            form.save()
            profilesave = profileform.save(commit=False)            
            profilesave.save()
    return render(request, 'setting/edit_reporter.html',
                   {'form': form,
                     'userprofile':userprofile
                    })

网址.py

urlpatterns = patterns(
    'setting.views',
    (r'^$', 'index'),      
    (r'^save-reporter/$', 'save_reporter'),)

js:

$('.reporter').click(function () {       
        alert(1)     
        var id = $(this).attr('id');  
        var csrf_token = $("#csrf_token").val();
        $.ajax({ 
           data:{
                csrfmiddlewaretoken: ('{{csrf_token}}'),   
               // form:form.serialize(),            
                id:id,

                },
        type:'POST',
        url: '/setting/save-reporter/',
        success: function() {
            $('#authorisedreporter').show();
        }
      });
     });

html:

<button type="button" id="{{ list.0.id }}" class="openDiv">{{list.0.name}} </button>

{{ list.0.id }} id from list 是用户表中的id

这是我的views.py来更新表单数据。我想实例化表单数据,需要在更新模式下显示该字段。它没有被实例化。我从POST获得正确的ID。需要帮助

4

2 回答 2

0

所以这就是我的做法:

将其包含在您的 html 模板中(如果需要,可以使用 display: none 隐藏它)。my_id 是您必须以某种方式传递的上下文变量。

<div id="save-url" rel="{% url "save_reporter" pk=my_id %}" ></div>

然后在你的ajax调用中你可以获取url:

$.ajax({
   type: 'GET',
   url: $('#save-url').attr('rel'),
...

您的网址如下所示:

url(r'^save-reporter/(?P<pk>\d+)/$', myapp.views.save_report, name='save_report'), 

你的观点是这样的:

views.py def save_report(request, pk):
     user = User.objects.get(id=pk)

现在 pk 是您从 ajax 调用传递的用户 ID。顺便说一句,您发布的网址是指 save_reporter,该函数称为 save_report。

PS 无意冒犯,但您应该多花一点时间来尽可能清楚地表述您的问题并包含相关信息。

编辑:明白了。这太有趣了。我原以为你可以使用你所拥有的来访问 id,但你可以尝试

id = request.POST['id']

无论如何,这不是一种非常“Django”的做事方式,您应该在 url 中包含 id(请参阅上面的答案)。

于 2013-08-08T14:10:36.007 回答
0

假设,您想用request.user. 如果您想为其他用户填充,您需要从 url 获取 id,然后检索它useruserprofile.

所以你的观点可以更新为

def save_report(request):
    user = request.user
    userprofile = UserProfile.objects.get(user=user)
    form = ReporterRegisterForm(instance=user)
    profileform = ProfilecontactForm(instance=userprofile)

    if request.method == 'POST':        
        form = ReporterRegisterForm(request.POST, instance=user) 
        profileform = ProfilecontactForm(request.POST,instance = userprofile)
        if form.is_valid() and profileform.is_valid(): 
            form.save()
            profilesave = profileform.save(commit=False)            
            profilesave.save()
    return render(request, 'setting/edit_reporter.html',
                   {'form': form,
                     'userprofile':userprofile
                    })
于 2013-08-08T12:10:09.713 回答