私が取り組んでいるプロジェクト管理アプリでは、あなたがチケットの所有者(つまり作成者)であるか、チケットが属するプロジェクトの管理者である場合、チケットを編集/削除できるはずです。
プロジェクトを表示するためのテンプレートで、カスタムフィルターを使用してこれを決定します。これは、次のように使用されます。
{% if ticket|owner_or_admin:user %}
<p>
<a href="{% url ticket_edit project.id %}">Edit</a>
<a id="delete_link" href="{% url ticket_delete ticket.id %}">Delete</a>
</p>
{% endif %}
以下はこのカスタムフィルターを作成する試みですが、これはエラーをスローします('owner_or_adminには2つの引数が必要で、1つは提供されています'):
@register.filter(name='owner_or_admin')
def ownership(ticket, project, user):
if ticket.user == user:
return true;
else:
if project.added_by_user == user:
return true
return false
モデル:
class Project(models.Model):
... fields ...
added_by_user = models.ForeignKey(User)
class Ticket(models.Model):
... fields ...
user = models.ForeignKey(User)
では、どうすれば2つの引数を提供できますか?それ以外の場合、カスタムフィルターは正しいですか?
前もって感謝します!