1

我不是 100% 这是 Django 的新手。我想列出属于我的组的所有联系人名字。我只加载组以保存两次命中数据库,我被告知使用 select_related 来实现这一点。以下是我尝试过的。有人可以解释我做错了什么吗?谢谢你。

模型.py

class Group(models.Model):
    name = models.CharField(max_length=60)
    user = models.ForeignKey(User, related_name="user")

class Contact(models.Model):
    first_name = models.CharField(max_length=60)
    group = models.ForeignKey(Group)

m view.py 的一部分

 if id:
        # If we have an id try and get it and populate instance.
        group = get_object_or_404(Group.objects.select_related(), pk=id)
        show_upload = True
        # If we have an instance check that it belongs to the login.
        if group.user != request.user:
            return HttpResponseForbidden()

我试图列出联系人名字的模板部分

 {% for item in group.contact %}
        <tr>

        {{ item.first_name }}


        </tr>
    {% endfor %} 
4

1 回答 1

0

你可以这样做:

group_instance.contact_set.all().values_list('first_name',flat=True)

请参阅此页面上有关相关对象的示例。(“访问外键值”部分)

select_related用于数据库级别的 JOIN。

此处get_object_or_404描述了of 的使用。

def my_view(request):
    my_object = get_object_or_404(MyModel, pk=1)

相当于

def my_view(request):
    try:
        my_object = MyModel.objects.get(pk=1)
    except MyModel.DoesNotExist:
        raise Http404
于 2013-03-17T18:07:32.717 回答