3

在我的模板中,我显示了用户关注的用户列表。我希望用户能够通过一个按钮删除他关注的用户之一。我有一个删除关系的函数 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 回答