我有一个Django博客,其中包含“Post”模型:
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
命令将一堆“Post”对象(已完成上述所有字段)上传到我的数据库。但是,当我登录管理站点以修改对象时,我为“类别”字段上载的值不会在字段的下拉列表中显示为预先选择的值。为什么是这样?有没有办法解决它?
编辑:这是我的json fixture文件的片段:
{
"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"
}
答案 0 :(得分:0)
根据我在上一次对该问题的评论中所说的,此问题很可能与blank=True
模型的category
字段中的属性Post
有关。但是,由于您为示例模型实例( breakfast )指定了特定类别,因此它也应显示在管理配置中。
这种行为的原因可能是Django不期望blank
中的CharField
属性设置了choices
属性,因为它在这里没有意义。如果您希望能够说Post
个实例不属于特定类别,那么最好在CATEGORY_CHOICES
中添加其他选项,例如('none', 'None')
。也许这也可能是Django管理模块中的一个错误,但我不知道这个。