我有一个非常简单的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上没有这个问题。
答案 0 :(得分:1)
对于raw_id_fields
,请参阅Django's Admin raw_id_fields
要编写自定义延迟加载ModelChoiceField
,请参阅Django Custom Widgets
答案 1 :(得分:1)
我知道这不是问题的答案,但它可以帮助澄清可能导致此错误的情况类型,至少它会对我有所帮助。
我在使用django rest框架时遇到了MemoryError,因为我有一个包含2000000个项目的表的外键,并且web浏览器API想要将所有项目添加到下拉列表中。