2

我英语说得不好?但我在 Django 中有问题。我有模型:

class Model1(models.Model):
    model2 = models.ManyToManyField(Model2)
    #...
class Model2(models.Model):
    model3 = models.ForeignKey(Model3)
    #...
class Model3(models.Model):
    custom = models.CharField()

有看法

def simple(request, simple_id):
    if request.method == 'POST':
        if request.is_ajax():
            if 'delete' in request.POST:
                id3 = request.POST.get('delete', '')
                Model1.objects.get(id = simple_id).model2.filter(model3__id = id3).delete()

也就是说,当提交一个 name = "delete" 的表单时,Ajax 已经删除了属于 Model2 且字段 "model3" 具有相同值的所有对象。这是一个模板:

<form action="" method="post" id="simple">{% csrf_token %}
<input type="submit" name="delete" id="simple_delete" value="">
</form>

从js传递的值:

$('.deletebutton').click(function(){
    id = $(this).attr('data-id');
    $('#simple_delete').attr('value', id);
    $('#simple').ajaxForm();
    $('#simple_delete').click();
});

嗯,分别插件 jquery.form.js 也连接了

问题是这样的 - 如果没有 ajax 的提交都是正常的,它可以工作......如果使用 Ajax 是一个错误,例如不正确的 int 值......如何使其通过 Ajax 工作?

4

1 回答 1

2

尝试这个

$('.deletebutton').click(function(){
     id = $(this).attr('data-id');
     $.ajax(function(){
         type:"POST",
         url :"/your_url/",
         data:{
              'id'=id,
         }
    }).done(function(result){
         alert('your json object result render by view :'+result)
    })

我认为它有效,我不明白你在做什么,即 $('#simple_delete').click(); 你能描述一下吗

在视野中

obj = Model1.objects.get(id = simple_id)
model2.objects.filter(model3__id = id3).delete()

我只是将单行查询分成两行,如果不工作使用 .select_related()

于 2012-12-12T08:35:01.053 回答