【发布时间】: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