Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 如何在myListView中定义另一个模型的slug_Django - Fatal编程技术网

Django 如何在myListView中定义另一个模型的slug

Django 如何在myListView中定义另一个模型的slug,django,Django,我需要帮助理解我自己的代码,特别是views.py。我正在尝试更改TitleUpdateListView的url模式,从使用我的更新模型标题字段改为使用slug字段 如果有人能逐行解释我的TitleUpdateListView中的内容,这样我就能更好地理解具体的内容,那就太好了 url.py urlpatterns = [ # Update view for each game path('<str:title>/updates/', TitleUpdateListV

我需要帮助理解我自己的代码,特别是views.py。我正在尝试更改TitleUpdateListView的url模式,从使用我的更新模型标题字段改为使用slug字段

如果有人能逐行解释我的TitleUpdateListView中的内容,这样我就能更好地理解具体的内容,那就太好了

url.py

urlpatterns = [
    # Update view for each game
    path('<str:title>/updates/', TitleUpdateListView.as_view(), name='title-updates'),
    # Adds the ability to sort by platform
    path('<str:title>/updates/<int:platform_id>/', TitleUpdateAjaxListView.as_view(), name='title-updates-ajax'),

]

不确定您所说的“我正在尝试更改TitleUpdateListView的url模式,从使用我的更新模型标题字段改为使用slug字段”是什么意思。在url.py中,您可以将参数的名称(在
中的xxxx)更改为您想要的任何名称,只要您还在视图中查找相同的名称。您可以将其更改为
,在视图中,您可以像
self.kwargs.get('slug')
一样获取它。只需记住还要更改用于过滤
游戏
表的参数(
slug
而不是
title

至于解释您的视图的作用,您可能应该看看Django关于基于类的视图的文档,但我将尝试给出一个概述:

get\u queryset
方法正在搜索
Game
表,以查找其标题与URL参数中传递的标题匹配的游戏。然后返回所有
Update
对象的列表,这些对象的
game
字段指向刚刚找到的游戏


get\u context\u data
方法将在
get\u queryset
方法中找到的相同的
Game
对象添加到
'Game'
键下的视图上下文中。这意味着您可以访问此视图呈现的模板内的
游戏
对象。

不确定您所说的“我正在尝试更改我的TitleUpdateList视图的url模式,而不是使用我的更新模型标题字段,而是使用slug字段。”。在url.py中,您可以将参数的名称(在
中的xxxx)更改为您想要的任何名称,只要您还在视图中查找相同的名称。您可以将其更改为
,在视图中,您可以像
self.kwargs.get('slug')
一样获取它。只需记住还要更改用于过滤
游戏
表的参数(
slug
而不是
title

至于解释您的视图的作用,您可能应该看看Django关于基于类的视图的文档,但我将尝试给出一个概述:

get\u queryset
方法正在搜索
Game
表,以查找其标题与URL参数中传递的标题匹配的游戏。然后返回所有
Update
对象的列表,这些对象的
game
字段指向刚刚找到的游戏


get\u context\u data
方法将在
get\u queryset
方法中找到的相同的
Game
对象添加到
'Game'
键下的视图上下文中。这意味着您可以访问此视图呈现的模板内的
Game
对象。

您只需更改视图的
get\u queryset
方法:

# change url variable name from title to slug
path('<str:slug>/updates/', TitleUpdateListView.as_view(), name='title-updates'),
这同样适用于
get\u context\u data

def get_context_data(self, **kwargs):
    context = super(TitleUpdateListView, self).get_context_data(**kwargs)
    context['game'] = get_object_or_404(Game, slug=self.kwargs.get('slug'))
    return context

您只需更改视图的
get\u queryset
方法:

# change url variable name from title to slug
path('<str:slug>/updates/', TitleUpdateListView.as_view(), name='title-updates'),
这同样适用于
get\u context\u data

def get_context_data(self, **kwargs):
    context = super(TitleUpdateListView, self).get_context_data(**kwargs)
    context['game'] = get_object_or_404(Game, slug=self.kwargs.get('slug'))
    return context

从您的问题中,可以假设您实际上想要了解代码中发生了什么,但从选定的答案来看,您似乎只是想要正确的代码。这没问题,但以后要从一开始就直截了当,这样你就能更快地得到答案,没有人浪费时间写你实际上不想写的东西。这是我的错,对不起。我刚刚意识到你不能标记多个正确答案。我最初标记了您的用户,然后标记了其他用户。从您的问题中,人们会认为您实际上想了解代码中发生了什么,但从所选的答案来看,您似乎只需要正确的代码。这没问题,但以后要从一开始就直截了当,这样你就能更快地得到答案,没有人浪费时间写你实际上不想写的东西。这是我的错,对不起。我刚刚意识到你不能标记多个正确答案。我最初标记了您的用户,然后标记了其他用户。