2010-05-21 46 views
1

在我的Django管理员中,当我尝试从一个特定模型类查看/编辑对象时,内存使用情况和CPU激增,我必须重新启动服务器。我可以很好地查看对象的列表,但是当我单击其中一个对象时会出现问题。其他型号很好。在代码中处理对象(即创建和显示)是可以的,只有当我尝试使用管理界面查看对象时才会出现问题。这个班级甚至没有特别的情节:Django管理员导致一个模型的高负载

class Comment(models.Model): 
    user = models.ForeignKey(User) 
    thing = models.ForeignKey(Thing) 
    date = models.DateTimeField(auto_now_add=True) 
    content = models.TextField(blank=True, null=True) 
    approved = models.BooleanField(default=True) 

    class Meta: 
     ordering = ['-date'] 

任何想法?我很难过。我能想到的唯一原因可能是thing是一个相当大的对象(几kb),但据我了解,它不会被加载,直到它需要(正确?)。

+0

什么是您的管理员定义?你如何向管理员注册“评论”? – 2010-05-21 12:51:33

+0

只是'admin.site.register(评论)' – Joe 2010-05-21 13:06:45

回答

5

这不是一个真正的问题,对象是多大,而是你在数据库中有多少。这是因为对于ForeignKey,默认情况下,Django的管理员会为您提供一个包含所有现有项目的下拉列表。如果你有很多很多的东西,那么Django会加载它们以填充这个列表。这里的用户也是如此。

围绕此问题的最佳方法是将违规字段添加到ModelAdmin子类中的raw_id_fields。这将改变表示为id的简单文本框,并带有弹出式查找窗口。

+1

是的,这是最肯定的,谢谢。有大约20万件东西,比你想要的