Django:获取具有 auth.Group 作为外键的配置文件

Django: get profiles having auth.Group as foreign key

我有一个使用 auth.models.Group 作为外键的模型,名为 Dashboard:

class Dashboard(models.Model):
    d_name = models.CharField(max_length=200)
    d_description = models.CharField(max_length=200)
    d_url = models.CharField(max_length=200)
    d_status = models.CharField(max_length=200)
    owner = models.ForeignKey(Group)

    def __str__(self):return self.d_name

我的 views.py 是:

def custom_login(request):
    if request.user.is_authenticated():
        return HttpResponseRedirect('dashboards')        
    return login(request, 'login.html', authentication_form=LoginForm)

def custom_logout(request):
    return logout(request, next_page='/')

def user(request):
    context = {'user': user, 'groups': request.user.groups.all()}
    return render_to_response('registration/dashboards.html', context,
                              context_instance=RequestContext(request))

在这里使用这个 dashboards.html 我想通过使用 Group_name 显示仪表板,我将得到 group.name:

{% extends "base.html" %}
{% block content %}
{% if user.is_authenticated %}
    <p>Welcome, {{ request.user.get_username }}. <br/>
    {% else %}
    <p>Welcome, new user. Please log in.</p>
{% endif %}

<ul>
{% for group in groups %}
    <li>
        <strong>{{ group.name }}<strong> -

            {{ dashboards.d_name }}{% if not forloop.last %},{% endif %}

    </li>
{% endfor %}
</ul>



{% endblock %}

这里我已经把我的问题的所有支持信息都提到了,如果有任何解决方案请告诉我。

要访问 GroupDashboard 列表,请使用 group.dashboard_set 查询集:

{% for group in groups %}
    <li>
        <strong>{{ group.name }}</strong> -
        {% for dashboard in group.dashboard_set.all %}
            {{ dashboard.d_name }}{% if not forloop.last %},{% endif %}
        {% endfor %}
    </li>
{% endfor %}

这个查询集叫做“backward relationship”。

views.py

def user(request):
    user= request.user
    groups = request.user.groups.all()
    dashboards = Dashboard.objects.filter(owner=groups)

    context = {
        'user': user,
        'groups': groups,
        'dashboards': dashboards,
    }
    return render_to_response('registration/dashboards.html', context, context_instance=RequestContext(request))

和dashboards.html

{% extends "base.html" %}
{% block content %}
{% if user.is_authenticated %}
    <p>Welcome, {{ request.user.get_username }}. <br/>
    {% else %}
    <p>Welcome, new user. Please log in.</p>
{% endif %}

<ul>
{% for group in groups %}
    <li>
        <strong>you belongs to::{{ group.name }}</strong> </li>
{% endfor %}
</ul>
<strong>#Dashboards available are::</strong>
{% for Dashboard in dashboards %}
    <ol>
 <li>{{ Dashboard.d_name }}-{{ Dashboard.owner }}-{{Dashboard.d_description}}</li> </ol>
{% endfor %}


{% endblock %}

这很好用,很整洁,