无法在Django中将关键字u'slug'解析为字段错误?

头脑风暴

我收到以下错误:

FieldError at /blog/1/first-post/

Cannot resolve keyword u'slug' into field. Choices are: article, date, id, likes

Request Method:     GET
Request URL:    http://127.0.0.1:8000/blog/1/first-post/
Django Version:     1.6.2
Exception Type:     FieldError
Exception Value:    

Cannot resolve keyword u'slug' into field. Choices are: article, date, id, likes

我的模特:

class Article(models.Model):
    title = models.CharField(max_length=20)
    body = models.TextField()
    image = models.ImageField(upload_to="/", blank=True, null=True)
    slug = models.SlugField()

    def save(self, *args, **kwargs):
        if not self.id:
            self.slug = slugify(self.title)
        super(Article, self).save(*args, **kwargs)

    def get_absolute_url(self):
        return reverse('article_detail', kwargs={'slug':self.slug, 'id':self.id})

    def __unicode__(self):
        return self.title

class Detail(models.Model):
    article = models.ForeignKey(Article)
    date = models.DateField()
    likes = models.IntegerField()

    def __unicode__(self):
        return "%s %s" % (self.article.title, self.likes)

    def get_absolute_url(self):
        return reverse('detail_article', kwargs={'id':self.id})

看法:

class ArticleDetail(DetailView):
     model = Detail
     template_name = "article_detail.html"
     context_object_name = "details"

     def get_queryset(self):
        print self.kwargs['slug']
        a = Article.objects.get(slug=self.kwargs['slug'])
        # print Details.object.get()
        # print Detail.objects.filter(article__slug=self.kwargs['slug']) fails with same error
        return Detail.objects.filter(article=a)

urls.py(位于博客应用程序内部):

urlpatterns = patterns('',

url(r'all$', ArticleList.as_view(), name='blog_all'),
url(r'^(?P<id>\d+)/(?P<slug>[-\w\d]+)/$', ArticleDetail.as_view(), name='article_detail'),
url(r'^detail/?(P<id?\d+)/$', DetailArticle.as_view(), name='detail_article'),
url(r'^create$', ArticleCreateView.as_view(), name='blog_create'),
)

基本上,an的detailViewarticle instance将显示与detail具有外键关系模型的内容article modelarticle实例的详细信息视图显示该实例不是传统的方式

模板在这里:

{% extends "base.html" %}
{% block content %}
{% for detail in details %}
<p>{{ detail.article.title }}</p>
<p>{{ detail.date }}</p>
<p>{{ detail.likes }}</p>
{% endfor %}
{% endblock %}
酵母菌

解决方案:您需要将url中的slug参数重命名为其他名称,或者在您的视图中将slug_url_kwarg设置为其他一些值-而不是'slug'

说明:当您添加到url时,django会尝试通过slug获取对象,并且您的模型Detail没有任何slug字段。

链接到Django代码:https : //github.com/django/django/blob/master/django/views/generic/detail.py#L33

更新

在SingleObjectMixin中:

slug = self.kwargs.get(self.slug_url_kwarg, None)
...
elif slug is not None:
    slug_field = self.get_slug_field()
    queryset = queryset.filter(**{slug_field: slug})

所以django从您的网址中获取子弹,尝试从Detail模型中获取子弹字段,但失败

您的视图需要重写slug_url_kwarg属性:

class ArticleDetail(DetailView):
    model = Detail
    template_name = "article_detail.html"
    context_object_name = "details"
    slug_url_kwarg = "not_slug" # this attribute

 def get_queryset(self):
    print self.kwargs['slug']
    a = Article.objects.get(slug=self.kwargs['slug'])
    # print Details.object.get()
    # print Detail.objects.filter(article__slug=self.kwargs['slug']) fails with same error
    return Detail.objects.filter(article=a)

但我认为更好的方法是更改​​URL中的属性:

url(r'^(?P<id>\d+)/(?P<article_slug>[-\w\d]+)/$', ArticleDetail.as_view(), name='article_detail'),

并从视图kwargs获取article_slug

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无法在Django中将关键字u'slug'解析为字段错误?

来自分类Dev

无法将关键字“ slug_iexact”解析为字段。选项包括:Tag_Name,id,posts,slug

来自分类Dev

错误:无法将关键字“ id”解析为字段

来自分类Dev

Django:无法将关键字“”解析为字段。选择是:

来自分类Dev

Django字段错误无法解析关键字'is_staff

来自分类Dev

管理员搜索时出现Django错误:无法将关键字“用户名”解析为字段

来自分类Dev

FieldError:无法将关键字“ XXXX”解析为字段

来自分类Dev

Django 1.11.8 - Slug - 意外的关键字参数

来自分类Dev

django-filter order_by“无法将关键字“名称”解析为字段”

来自分类Dev

无法将关键字“模型”解析为字段。Django过滤器

来自分类Dev

Django FieldError:无法将关键字“ custom_field”解析为字段。选择是:

来自分类Dev

Django无法将关键字“ items”解析为字段。选项包括:id,名称

来自分类Dev

异常值:(无法解析关键字)在Django中

来自分类Dev

Django @property计算模型字段:FieldError:无法解析关键字

来自分类Dev

无法将关键字“项目”解析为字段。选项包括:id,名称

来自分类Dev

无法将关键字“field_object”解析为字段

来自分类Dev

Django->无法解决关键字错误,但字段在回溯的选择中

来自分类Dev

如何在Nginx中将url / id / slug(WordPress)重写为Slug(Ghost)?

来自分类Dev

OneToOneField获取“无法解析关键字”

来自分类Dev

django.core.exceptions.fielderror:无法将关键字“ flight”解析为字段。选项包括:第一,航班,ID,最后

来自分类Dev

django 1.9 slug字段不适用于外语

来自分类Dev

django 1.9 slug字段不适用于外语

来自分类Dev

Heroku的Slug错误

来自分类Dev

htaccess slug 404错误

来自分类Dev

当多个应用程序使用模型时,Django ORM无法解析相关字段的关键字进行聚合

来自分类Dev

创建用户后,无法为“ page_slug”生成URL

来自分类Dev

/ <user-slug> / <blog-slug>处的ValueError字段'id'需要一个数字,但在django中得到了'<user-slug>'

来自分类Dev

无法将关键字“名称”解析为字段。选项包括:categoria,categoria_id,detalle_compra,

来自分类Dev

使用Slug访问url时在Django中出现NoReverseMatch错误

Related 相关文章

  1. 1

    无法在Django中将关键字u'slug'解析为字段错误?

  2. 2

    无法将关键字“ slug_iexact”解析为字段。选项包括:Tag_Name,id,posts,slug

  3. 3

    错误:无法将关键字“ id”解析为字段

  4. 4

    Django:无法将关键字“”解析为字段。选择是:

  5. 5

    Django字段错误无法解析关键字'is_staff

  6. 6

    管理员搜索时出现Django错误:无法将关键字“用户名”解析为字段

  7. 7

    FieldError:无法将关键字“ XXXX”解析为字段

  8. 8

    Django 1.11.8 - Slug - 意外的关键字参数

  9. 9

    django-filter order_by“无法将关键字“名称”解析为字段”

  10. 10

    无法将关键字“模型”解析为字段。Django过滤器

  11. 11

    Django FieldError:无法将关键字“ custom_field”解析为字段。选择是:

  12. 12

    Django无法将关键字“ items”解析为字段。选项包括:id,名称

  13. 13

    异常值:(无法解析关键字)在Django中

  14. 14

    Django @property计算模型字段:FieldError:无法解析关键字

  15. 15

    无法将关键字“项目”解析为字段。选项包括:id,名称

  16. 16

    无法将关键字“field_object”解析为字段

  17. 17

    Django->无法解决关键字错误,但字段在回溯的选择中

  18. 18

    如何在Nginx中将url / id / slug(WordPress)重写为Slug(Ghost)?

  19. 19

    OneToOneField获取“无法解析关键字”

  20. 20

    django.core.exceptions.fielderror:无法将关键字“ flight”解析为字段。选项包括:第一,航班,ID,最后

  21. 21

    django 1.9 slug字段不适用于外语

  22. 22

    django 1.9 slug字段不适用于外语

  23. 23

    Heroku的Slug错误

  24. 24

    htaccess slug 404错误

  25. 25

    当多个应用程序使用模型时,Django ORM无法解析相关字段的关键字进行聚合

  26. 26

    创建用户后,无法为“ page_slug”生成URL

  27. 27

    / <user-slug> / <blog-slug>处的ValueError字段'id'需要一个数字,但在django中得到了'<user-slug>'

  28. 28

    无法将关键字“名称”解析为字段。选项包括:categoria,categoria_id,detalle_compra,

  29. 29

    使用Slug访问url时在Django中出现NoReverseMatch错误

热门标签

归档