【问题标题】:Django admin causes high load for one modelDjango admin 导致一个模型的高负载
【发布时间】:2010-05-21 12:48:20
【问题描述】:

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

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),但据我了解,它在需要时才会加载(对吗?)。

【问题讨论】:

  • 您的管理员定义是什么?您如何向管理员注册Comment
  • admin.site.register(Comment)

标签: django django-models django-admin


【解决方案1】:

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

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

【讨论】:

  • 是的,这是肯定的,谢谢。大约有 200,000 个事物,这比您在
猜你喜欢
  • 2012-07-24
  • 1970-01-01
  • 2017-11-29
  • 1970-01-01
  • 2011-01-14
  • 2017-07-30
  • 2013-03-14
  • 2013-08-14
  • 2015-09-17
相关资源
最近更新 更多