【问题标题】:Slug field error in djangodjango中的Slug字段错误
【发布时间】:2011-08-15 07:10:06
【问题描述】:

我正在尝试将以下 Blog 应用程序集成到我的网站,我在 slug 字段中收到以下错误,如何解决此问题

     TypeError at /login/

     __init__() got an unexpected keyword argument 'prepopulate_from'

     Request Method:   GET
     Request URL:   http://192.168.254.35/accounts/login/new_wind/
     Django Version:   1.2.1 SVN-1957
     Exception Type:   TypeError
     Exception Value:

     __init__() got an unexpected keyword argument 'prepopulate_from'

这是我的models.py

from django.db import models
from datetime import datetime

class BlogPost(models.Model):
  title = models.CharField(max_length=128)
  slug = models.SlugField(prepopulate_from=('title',))
  body = models.TextField()
  published = models.BooleanField(default=True)
  date_posted = models.DateTimeField(default=datetime.now)

def __unicode__(self):
    return self.title

class Admin:
    pass

【问题讨论】:

    标签: python django django-models django-templates django-views


    【解决方案1】:

    错误说明了一切:SlugField 不采用关键字参数 prepopulate_fromThe docs 支持这一点 - 除了标准参数之外,它只接受参数 max_length。这应该改为in the admin class

    编辑:所以您的模型文件将是:

    from django.db import models
    from datetime import datetime
    
    class BlogPost(models.Model):
      title = models.CharField(max_length=128)
      slug = models.SlugField()
      body = models.TextField()
      published = models.BooleanField(default=True)
      date_posted = models.DateTimeField(default=datetime.now)
    
    def __unicode__(self):
        return self.title
    

    同一应用程序的 admin.py 文件将是:

    from django.contrib import admin
    from myapp.models import BlogPost
    
    class BlogPostAdmin(admin.ModelAdmin):
        prepopulated_fields = {"slug": ("title",)}
    
    admin.site.register(BlogPost, BlogPostAdmin)
    

    如果您不了解管理站点的工作原理,请参阅Part 2 of the official Django tutorial

    【讨论】:

    • 我有 django/django/contrib/auth/admin.py 但这是什么必须在这个..
    【解决方案2】:

    django中似乎已经更新了预填充的方式,请看这个问题:Is there an easy way to populate SlugField from CharField?

    【讨论】:

    • 我手边没有 django,但我认为 Blairs 的回答是正确的,除了 prepopulate_from=('title',) 应该被删除,如果我正确解释文档的话。
    猜你喜欢
    • 2015-07-27
    • 2014-04-21
    • 2011-07-01
    • 2018-11-28
    • 2021-10-02
    • 2016-12-22
    • 2011-08-09
    • 1970-01-01
    • 2018-02-17
    相关资源
    最近更新 更多