Django 1.11.8 - Slug - 意外的关键字参数
Django 1.11.8 - Slug - Unexpected Keyword argument
我是 django 的新手,几天前我开始构建我的第一个应用程序。我首先浏览了 MDN 教程和 Django 教程 - 构建 2 "dummy" 个应用程序。
我目前正在尝试开发一个照片库应用程序,它将显示属于某个相册的所有图片。我能够在我的 urls.py 和基于 class 的视图中使用来实现这一点,不过,我想使用 .我希望我的 URL 看起来像 mysite.com/myapp/my-album-name vs mysite.com/myapp/1
我知道他们是在这里问过的类似问题,我已经经历了其中的大部分,阅读了关于单一对象混合的 Django 文档,Class 基于视图,但我仍然不明白如何让 slug 工作。
到目前为止我已经尝试过:
- 在我的模型中实现一个 slug 字段和相应的 slug
我的 admin.py 文件中的值:
型号
class Album(models.Model):
album_name = models.CharField(max_length=100, help_text="Enter the name of your album" )
album_creation_date = models.DateField(auto_now_add=True)
album_modified_date = models.DateField(auto_now=True)
slug = models.SlugField(max_length=50)
观看次数
class albumPictures(generic.DetailView):
model = Album
管理员
class AlbumAdmin(admin.ModelAdmin):
list_display = ('album_name', 'album_creation_date')
slug = prepopulated_fields = {'slug': (Album.album_name)}
admin.site.register(Album, AlbumAdmin)
错误信息: <class 'Albums.admin.AlbumAdmin'>: (admin.E030) The value of 'prepopulated_fields["slug"][0]' refers to '<django.db.models.query_utils.DeferredAttribute object at 0x107f234a8>', which is not an attribute of 'Albums.Album'.
- 在我的模型中使用
prepopulated_from=album_name
或 prepopulated_fields=album_name
实现 slug 字段
型号 (1)
class Album(models.Model):
album_name = models.CharField(max_length=100, help_text="Enter the name of your album" )
album_creation_date = models.DateField(auto_now_add=True)
album_modified_date = models.DateField(auto_now=True)
slug = models.SlugField(prepopulated_from=album_name)
型号 (2)
class Album(models.Model):
album_name = models.CharField(max_length=100, help_text="Enter the name of your album" )
album_creation_date = models.DateField(auto_now_add=True)
album_modified_date = models.DateField(auto_now=True)
slug = models.SlugField(prepopulated_fields=album_name)
观看次数
class albumPictures(generic.DetailView):
model = Album
错误信息: TypeError: __init__() got an unexpected keyword argument 'prepopulated_from'
感谢您的帮助
models.SlugField()
不支持prepopulated_from
或prepopulated_fields
,所以在你的模型中你应该使用
slug = models.SlugField(max_length=50)
而不是
slug = models.SlugField(prepopulated_from=album_name)
或
slug = models.SlugField(prepopulated_fields=album_name)
其次,在您的 ModelAdmin
class 中,您应该使用带有 prepopulated_fields
选项的字符串元组:
class AlbumAdmin(admin.ModelAdmin):
list_display = ('album_name', 'album_creation_date')
prepopulated_fields = {'slug': ("album_name",)}
我是 django 的新手,几天前我开始构建我的第一个应用程序。我首先浏览了 MDN 教程和 Django 教程 - 构建 2 "dummy" 个应用程序。
我目前正在尝试开发一个照片库应用程序,它将显示属于某个相册的所有图片。我能够在我的 urls.py 和基于 class 的视图中使用来实现这一点,不过,我想使用 .我希望我的 URL 看起来像 mysite.com/myapp/my-album-name vs mysite.com/myapp/1
我知道他们是在这里问过的类似问题,我已经经历了其中的大部分,阅读了关于单一对象混合的 Django 文档,Class 基于视图,但我仍然不明白如何让 slug 工作。
到目前为止我已经尝试过:
- 在我的模型中实现一个 slug 字段和相应的 slug 我的 admin.py 文件中的值:
型号
class Album(models.Model):
album_name = models.CharField(max_length=100, help_text="Enter the name of your album" )
album_creation_date = models.DateField(auto_now_add=True)
album_modified_date = models.DateField(auto_now=True)
slug = models.SlugField(max_length=50)
观看次数
class albumPictures(generic.DetailView):
model = Album
管理员
class AlbumAdmin(admin.ModelAdmin):
list_display = ('album_name', 'album_creation_date')
slug = prepopulated_fields = {'slug': (Album.album_name)}
admin.site.register(Album, AlbumAdmin)
错误信息: <class 'Albums.admin.AlbumAdmin'>: (admin.E030) The value of 'prepopulated_fields["slug"][0]' refers to '<django.db.models.query_utils.DeferredAttribute object at 0x107f234a8>', which is not an attribute of 'Albums.Album'.
- 在我的模型中使用
prepopulated_from=album_name
或prepopulated_fields=album_name
实现 slug 字段
型号 (1)
class Album(models.Model):
album_name = models.CharField(max_length=100, help_text="Enter the name of your album" )
album_creation_date = models.DateField(auto_now_add=True)
album_modified_date = models.DateField(auto_now=True)
slug = models.SlugField(prepopulated_from=album_name)
型号 (2)
class Album(models.Model):
album_name = models.CharField(max_length=100, help_text="Enter the name of your album" )
album_creation_date = models.DateField(auto_now_add=True)
album_modified_date = models.DateField(auto_now=True)
slug = models.SlugField(prepopulated_fields=album_name)
观看次数
class albumPictures(generic.DetailView):
model = Album
错误信息: TypeError: __init__() got an unexpected keyword argument 'prepopulated_from'
感谢您的帮助
models.SlugField()
不支持prepopulated_from
或prepopulated_fields
,所以在你的模型中你应该使用
slug = models.SlugField(max_length=50)
而不是
slug = models.SlugField(prepopulated_from=album_name)
或
slug = models.SlugField(prepopulated_fields=album_name)
其次,在您的 ModelAdmin
class 中,您应该使用带有 prepopulated_fields
选项的字符串元组:
class AlbumAdmin(admin.ModelAdmin):
list_display = ('album_name', 'album_creation_date')
prepopulated_fields = {'slug': ("album_name",)}