2

私は Django を学ぶためのアプリを構築しており、現在連絡先と住所を保存している連絡先システムから始めました。C は A との多対多の関係ですが、Djangomodels.ManyToManyField()を使用するのではなく、その連絡先 (自宅、職場など) のアドレス タイプなど、リンクに関する追加情報を提供する独自のリンク テーブルを作成しました。私がやろうとしているのは、この情報をビューに渡すことです。そのため、連絡先の完全なビューでこれを行うことができます:

def contact_view_full(request, contact_id):
    c = get_object_or_404(Contact, id=contact_id)

    a = []
    links = ContactAddressLink.objects.filter(ContactID=c.id)    
    for link in links:
        b = Address.objects.get(id=link.AddressID_id)
        a.append(b)

    return render_to_response('contact_full.html', {'contact_item': c, 'addresses' : a }, context_instance=RequestContext(request))

c.Addresses.all()したがって、ManyToManyFieldと同等またはそれ以外のことを行うことができます。私が知りたいのは、テンプレートがこれを行うときに、linkオブジェクト内のリンクに関する情報を情報とともに渡す方法です。'addresses' : a

{% for address in addresses %}
<!-- ... -->
{% endfor %}

正しいリンク オブジェクト データをアドレスに適切に関連付けます。

では、これを達成するための最良の方法は何ですか? 私は 2 つのオブジェクトの結合がアイデアかもしれないと考えていますが、それが最善の方法であると考えられるかどうかを知るには、Django の経験が十分ではありません。提案?

前もって感謝します。

Nf

4

1 に答える 1

3

追加情報を追加するには、「トラフ」追加フィールドで ManyToMany 関係を使用する必要があります: http://docs.djangoproject.com/en/dev/topics/db/models/#extra-fields-on-many -対多関係

これにより、次のコードが生成されます。

def contact_view_full(request, contact_id):
    c = get_object_or_404(Contact, id=contact_id)
    a = c.addresses.all()
    return render_to_response('contact_full.html', {'contact_item': c, 'addresses' : a }, context_instance=RequestContext(request))
于 2010-03-22T21:49:11.467 に答える