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()

1行のクエリを2行に分割するだけで、機能しない場合は.select_related()を使用します

于 2012-12-12T08:35:01.053 に答える