【问题标题】:python code for django viewdjango视图的python代码
【发布时间】:2009-02-19 16:24:39
【问题描述】:

型号:

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. 用户从下拉菜单中选择一个病理名称和检索的 ID

查看:

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

我被困在哪里。我需要 python/django 语法来编写以下内容:

pathology_id 现在必须从表 Pathpubcombo(中间多线程表)中检索 publication_id。一旦获得了publication_id,就必须使用它从发布表中检索所有属性,并将这些属性发送到另一个html模板以显示给用户。

【问题讨论】:

    标签: python django syntax many-to-many


    【解决方案1】:

    您应该使用此处描述的多对多关系: 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))
    

    希望这可行,尚未测试,但你明白了。

    编辑:

    如果无法重命名表并使用 django 的内置支持,您也可以使用 select_related()。

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

    【讨论】:

    • 这三个表是从一个 PHP 项目中转移过来的。我认为 django 创建了相同的多对多表,但名称不同。必须通过 pathpubcombo 表检索发布 ID。反正有没有用python写?
    • 我在我的回答中添加了对此有用的参考
    • 我创建了一个新表:class Pathology(models.Model): pathology = models.CharField(max_length=100) publication = models.ManyToManyField(Publication)
    • def onebigsel(request): pathology_id = request.POST['pathology_id'] p = get_object_or_404(Pathology, pk=pathology_id) pub=p.publication.all() return render_to_response('search/pathology .html', { 'pathology': p, 'pub': pub,}, context_instance=RequestContext(request))
    • 我在模板 {% for publishing in pub %} 中放置了发布:{{ publication.title|safe }}
      {% endfor %} 查询没有检索到发布。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-18
    • 2016-03-22
    • 1970-01-01
    • 2018-07-07
    • 1970-01-01
    • 2017-03-25
    • 1970-01-01
    相关资源
    最近更新 更多