Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 检查用户是否为成员_Django_Django Models_Many To Many - Fatal编程技术网

Django 检查用户是否为成员

Django 检查用户是否为成员,django,django-models,many-to-many,Django,Django Models,Many To Many,在我的项目管理应用程序中,我有一个页面列出了所有项目,但是我想显示一个项目是否由用户所有,用户是否是项目的成员,或者两者都不是。我通过模板中的以下代码执行此操作: ... {% load custom_filters %} ... {% for project in projects %} {% if project|ownership:user %} <div class="users_project label label-info">

在我的项目管理应用程序中,我有一个页面列出了所有项目,但是我想显示一个项目是否由用户所有,用户是否是项目的成员,或者两者都不是。我通过模板中的以下代码执行此操作:

...
{% load custom_filters %}
...

{% for project in projects %}
    {% if project|ownership:user %}
        <div class="users_project label label-info">
            Admin
        </div>
        <a href="{% url show_project project.id %}">{{ project }}</a><br/>
    {% else %}
        {% if project|membership:user %}
            <div class="users_project label label-success">
                Member
            </div>
            <a href="{% url show_project project.id %}">{{ project }}</a><br/>
        {% else %}
                <div class="users_project label label-error">
        Not member
        </div>
            <a href="{% url show_project project.id %}">{{ project }}</a><br/>
        {% endif %}
    {% endif %}
{% endfor %}
…但至于另一个(项目成员),我需要帮助

@register.filter(name='membership')
def membership(project, user):
    return ?
模型“用户”和“项目”具有多对多关系:

class Project(models.Model):
... other fields...
added_by_user = models.ForeignKey(User)
users = models.ManyToManyField(User, related_name='projects')
…这导致数据库中出现一个名为“project_users”的表,其中包含以下字段:

project_id (INT)
user_id    (INT)

可以直接查询多个字段:

project.users.filter(id=user.id).exists()
这将返回一个布尔值,显示该用户记录是否包含在用户列表中

project.users.filter(id=user.id).exists()