3

私のテンプレートでは、ユーザーがフォローしているユーザーのリストを表示します。ボタンのおかげで、ユーザーがフォローしているユーザーの1人を削除できるようにしたいと思います。リレーションシップを削除する関数 remove_relationship があります。

これが私のmodels.pyの関数です:

  class UserProfile(models.Model):
  (...)

      def remove_relationship(self, person):
        Relationship.objects.filter(
            from_person=self, 
            to_person=person).delete()
        return

この関数をテンプレートに渡したい:

   {% for user in following % }
   <form method="post">
    {% csrf_token %}
   <input type="submit" value="delete" onclick="remove_relationship"/>
   </form>
   {%endfor%}

問題は、テンプレートで引数を渡すことができないことです。では、各ボタンが適切なユーザーとの関係を削除するにはどうすればよいでしょうか?

このトピックに関する別の質問を見ましたが、それは私の問題を解決していないようです (http://stackoverflow.com/questions/1333189/django-template-system-calling-a-function-inside-a-model )

ご協力ありがとうございました。

4

1 に答える 1

5

クライアント側のコード (JavaScript) とサーバー側 (Django) を混同しているようです。

関連するユーザー ID を送信するには、フォームに隠しフィールドを追加します。

{% for user in following % }
<form method="post" action="{% url views.remove_relationship %}">
 {% csrf_token %}
<input type="hidden" name="user_id" value="{{ user.id }}">
<input type="submit" value="delete" />
</form>
{%endfor%}

次に、remove_relationship現在見つけているユーザーIDに基づいて、サーバー側で削除を行うビューを作成しますrequest.POST['user_id']

于 2012-11-05T14:23:21.250 に答える