正确获取型号ID

2024-04-25 02:24:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个模特。一种模式用于构建主菜单,另一种模式用于文章。每一篇文章都有ForeignKey链接到主菜单项。在

我搞不懂,如何在Article页面上显示链接到menuItem模型的alias字段作为URL地址?在

我的模型menuItem

    # -*- coding: utf-8 -*-
    from django.db import models

    class MainMenuItem(models.Model):
        class Meta:
            db_table = "menu_item"  
        title = models.CharField(max_length = 50)
        alias = models.CharField(max_length = 50)

        def __unicode__(self):
            return self.title

        def __str__(self):
            return self.title

我的模型Article

^{2}$

我的views.py

    def menu_builder(request, alias):
        findId = MainMenuItem.objects.????
        elements = {
            'menuItems': MainMenuItem.objects.all(),
            'article': Article.objects.get(id=??????),
        }
        return render_to_response('myview.html', elements)

我的urls.py

    urlpatterns = [
        url(r'^admin/', admin.site.urls),
        url(r'^(?P<alias>.+?)/$', 'menuItem.views.menu_builder'),
    ]

Tags: 模型selfreturnobjectstitle链接modelsdef
1条回答
网友
1楼 · 发布于 2024-04-25 02:24:15

您只需按MainMenuItem上的别名进行筛选,然后获得与MainMenuItem相关的所有文章:

def menu_builder(request, alias):
    main_menu_item = MainMenuItem.objects.get(alias=alias)
    elements = {
            'menuItems': main_menu_item,
            'articles': main_menu_item.article_set.all(),
        }
    return render_to_response('myview.html, elements)

关于related object lookup using ^{}的Django doc。在

编辑:

我之前应该使用objects.get(),但使用的是{},这是错误的。不同的是你应该只得到一个项目,这样你就可以得到与这个对象相关的文章。如果您使用filter,那么您将得到一个queryset,但是在多个对象上检查相关对象是没有意义的,因此出现错误'QuerySet' object has no attribute 'article_set'。在

注意,您应该为MainMenuItem对象使用不同的alias,否则get()将抛出异常“Multiple objects returned”。在

相关问题 更多 >