1

私は、これがDjangoにとって初めてのことで、100%どのように機能するかではありません。グループに属するすべての連絡先first_nameを一覧表示したいと思います。これを達成するためにselect_relatedを使用するように言われたので、DBに2回ヒットするのを防ぐために、グループをロードするだけです。以下は私が試したものです。誰かが私が間違っていることを説明できますか?ありがとうございました。

model.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)

mview.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()

連絡先first_nameをリストしようとしているテンプレートの部分

 {% 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で説明します。

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 に答える