MemoryError at ...未提供异常消息

时间:2016-01-03 13:18:14

标签: django django-models django-admin

我有一个非常简单的ManyToMany关系:

@python_2_unicode_compatible
class Mot(BaseModel):
    groupes_categories = models.ManyToManyField(GroupeCategories, blank=True,
                                                through='MotGroupeCategories',
                                                symmetrical=False,
                                                related_name='mot')
    texte = models.CharField(max_length=150)

    def __str__(self):
        return _(u'{}').format(self.texte)


@python_2_unicode_compatible
class GroupeCategories(models.Model):
    description = models.CharField(max_length=150)
    exemple = models.CharField(max_length=150, blank=True, default=None,
                               null=True)

    def __str__(self):
        return _(u'{0}{1}').format(
            self.description,
            u' ({0})'.format(self.exemple) if self.exemple else u''
        )


@python_2_unicode_compatible
class MotGroupeCategories(models.Model):
    mot = models.ForeignKey(Mot, blank=False)
    groupe_categories = models.ForeignKey(GroupeCategories, blank=False)

    def __str__(self):
        return u'{} - {}'.format(self.mot.texte,
                                 self.groupe_categories.description)

我已经多次这样做了,一切正常,除非我想通过管理编辑MotGroupeCategories

class MotGroupeCategoriesAdmin(admin.ModelAdmin):

    def mot_texte(self, obj):
        return obj.mot.texte
    mot_texte.allow_tags = True
    mot_texte.short_description = _(u'I.')

    fields = ('mot', 'groupe_categories')
    list_display = ('groupe_categories', 'mot_texte', 'id')
    list_display_links = list_display
    search_fields = ['description']


admin.site.register(MotGroupeCategories, MotGroupeCategoriesAdmin)

一切正常,除非我想编辑MotGroupeCategories:所有这些管理员的网址都是:

/admin/main/motgroupecategories/[id]/

结果

MemoryError at /admin/main/motgroupecategories/12060915/
No exception message supplied
Request Method: GET
Request URL:        /admin/main/motgroupecategories/[id]/
Django Version: 1.8.7
Exception Type: MemoryError
Exception Location: C:\Python27\lib\site-packages\django\forms\widgets.py
    in render_options, line 547

这是我第一次遇到这样一个奇怪的问题而且在stackoverflow上没有这个问题。

2 个答案:

答案 0 :(得分:1)

对于raw_id_fields,请参阅Django's Admin raw_id_fields

要编写自定义延迟加载ModelChoiceField,请参阅Django Custom Widgets

答案 1 :(得分:1)

我知道这不是问题的答案,但它可以帮助澄清可能导致此错误的情况类型,至少它会对我有所帮助。

我在使用django rest框架时遇到了MemoryError,因为我有一个包含2000000个项目的表的外键,并且web浏览器API想要将所有项目添加到下拉列表中。