Django Admin:为什么有些字段显示为空?

时间:2012-09-19 08:02:14

标签: django django-admin django-fixtures

我有一个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"
    }

1 个答案:

答案 0 :(得分:0)

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

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