код Python для просмотра Django - PullRequest
2 голосов
/ 19 февраля 2009

Модель:

class Pathology(models.Model):
    pathology = models.CharField(max_length=100)

class Publication(models.Model):
    pubtitle = models.TextField()

class Pathpubcombo(models.Model):
    pathology = models.ForeignKey(Pathology)
    publication = models.ForeignKey(Publication) 
  1. Список патологий, отправляемых в шаблон HTML в виде раскрывающегося меню

ВИД:

def search(request):
    pathology_list = Pathology.objects.select_related().order_by('pathology')
  1. Пользователь выбирает одно имя патологии из выпадающего меню и идентификатор, полученный с помощью

ВИД:

def pathology(request):
    pathology_id = request.POST['pathology_id'] 
    p = get_object_or_404(Pathology, pk=pathology_id)

Где я застрял. Мне нужен синтаксис python / django, чтобы написать следующее:

Идентификатор pathology_id теперь должен извлекать идентификатор публикации из таблицы Pathpubcombo (промежуточной таблицы множества). После получения значения публикации_идентификатора его необходимо использовать для извлечения всех атрибутов из таблицы публикации, и эти атрибуты отправляются в другой HTML-шаблон для отображения пользователю.

1 Ответ

5 голосов
/ 19 февраля 2009

вы должны использовать отношения «многие ко многим», как описано здесь: http://www.djangoproject.com/documentation/models/many_to_many/

Как:

class Pathology(models.Model):
    pathology = models.CharField(max_length=100)
    publications = models.ManyToManyField(Publication)

class Publication(models.Model):
    pubtitle = models.TextField()

Тогда

def pathology(request):
    pathology_id = request.POST['pathology_id'] 
    p = get_object_or_404(Pathology, pk=pathology_id)
    publications = p.publications.all()
    return render_to_response('my_template.html',
                              {'publications':publications},
                              context_instance=RequestContext(request))

Надеюсь, это работает, не проверял, но вы поняли.

редактировать:

Вы также можете использовать select_related (), если нет возможности переименовать таблицы и использовать встроенную поддержку django.

http://docs.djangoproject.com/en/dev/ref/models/querysets/#id4

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...