【问题标题】:Django Admin: Why are some fields showing up empty?Django Admin:为什么有些字段显示为空?
【发布时间】:2012-09-11 12:35:01
【问题描述】:

我有一个带有“Post”模型的 Django 博客,如下所示:

class Post(models.Model):
    title = models.CharField(max_length=1000)
    author = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')
    text = models.TextField(max_length=10000)
    CATEGORY_CHOICES = (
         ('breakfast','Breakfast'),
         ('brunch','Brunch'),
         ...
    )
    category = models.CharField(max_length=100,blank=True,choices=CATEGORY_CHOICES)

我已使用python manage.py loaddata fixturename.json 命令将一堆“发布”对象(已完成上述所有字段)上传到我的数据库。但是,当我登录管理站点以修改对象时,我为“类别”字段上传的值不会显示为字段下拉列表中的预选值。为什么是这样?有什么办法可以解决吗?

编辑:这是我的 json 夹具文件中的 sn-p:

    {
    "pk": 34, 
    "model": "blogs.post", 
    "fields": {
        "category": "breakfast",  
        "author": "jennaboller", 
        "text": "I have to say, my favorite weekend breakfast is blah blah blah", 
        "title": "Corned Beef Hash & Eggs: My Favorite Weekend Breakfast", 
        "pub_date": "2011-01-25 05:05:37"
    }

【问题讨论】:

  • 您确定类别字段中的数据对应于原始值,即每个 CHOICES 元组中的第一个元素吗?当你在 shell 中获得一个 Post 实例并执行 print post.category 时,你会看到什么?
  • @DanielRoseman,如果我使用print,我会得到breakfast。如果我只使用post.category,我会得到u'breakfast'。但我已经尝试将 CHOICES 元组更改为 unicode 值,但没有帮助。
  • 您能给我们看一段摘录吗,即您的fixturename.json 中的一个Post 对象实例?否则,恐怕很难帮你。但是,您的问题可能与 category 字段中的属性 blank=True 有关。另外,您的 PostAdmin 管理配置类是什么样的?
  • @PeterStahl,我编辑了我的帖子以显示我的一段 JSON 文件。我的 PostAdmin 配置类子类 admin.ModelAdmin 并且只有两行,inlines=[PostImageInline]Media=CommonMedia。第一个引用了一个子类admin.TabularInline,另一个CommonMedia只是一个带有js文件元组和css文件字典的类。
  • 嗯...您的 JSON 数据没有什么特别之处。您可以从category 字段中删除属性blank=True 并再次测试吗?这是我目前唯一的想法,不幸的是......

标签: django django-admin django-fixtures


【解决方案1】:

根据我在对问题的最后评论中所说的,这个问题很可能与category 模型的category 字段中的属性blank=True 有关。但是由于您为示例模型实例(早餐)指定了一个特定类别,它也应该显示在管理配置中。

这种行为的原因可能是 Django 不希望 CharField 中的 blank 属性设置了 choices 属性,因为它在这里没有意义。如果您希望能够说Post 实例不属于特定类别,那么最好在CATEGORY_CHOICES 中包含另一个选项,例如('none', 'None')。也许这也可能是 Django 管理模块中的一个错误,但我不知道。

【讨论】:

    猜你喜欢
    • 2015-12-16
    • 1970-01-01
    • 2021-09-18
    • 1970-01-01
    • 2012-05-12
    • 2011-06-23
    • 2019-11-11
    • 2015-01-10
    • 2018-06-17
    相关资源
    最近更新 更多