Вопрос

Я создаю приложение для изучения Django и начал с системы контактов, которая в настоящее время хранит контакты и адреса.C - это отношения многие-ко-многим с A, но вместо использования Django models.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 %}

и правильно связать правильные данные объекта ссылки с адресом.

Так какой же лучший способ добиться этого?Я думаю, что объединение двух объектов может быть идеей, но у меня недостаточно опыта работы с Django, чтобы знать, считается ли это лучшим способом сделать это.Предложения?

Заранее спасибо.

Нф

Это было полезно?

Решение

Чтобы добавить дополнительную информацию, вам следует использовать связь ManyToMany с дополнительным полем «корыто»:http://docs.djangoproject.com/en/dev/topics/db/models/#extra-fields-on-many-to-many-relationships

Это приведет к следующему коду:

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))
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top