我想使用limit_choices_to
来减少模型的Django管理员在使用内联时使用ManyToMany Field
的选择集。在
有趣的是,我想要限制选择的原因是为了性能,因为我想在相关模型类的__str__
方法中使用父模型的属性,而不限制选择会导致大量SQL查询。在
以下工作
class ParentOfA(models.Model):
name = models.CharField(max_length=50, null=True)
class A(models.Model):
parent = models.ForeignKey(ParentOfA)
def __str__(self):
return "%s" % self.parent
class B(models.Model):
a = models.ManyToManyField(A, limit_choices_to={"a__name":'parent name'})
如果我不在管理表单中为B
使用内联(遵循示例in the docs)。在
例如
^{pr2}$但是,对于内联,limit_choices_to
没有任何效果:
class BInline(admin.TabularInline):
model = B.A.through
@admin.register(B)
class BAdmin(admin.ModelAdmin):
inline = (BInline,)
有什么建议吗?在
我不知道为什么限制选项不适用于内联字段,我也有同样的问题。虽然这不是必需的,但是您可以使用以下答案限制内联字段的queryset:https://stackoverflow.com/a/4236159/1302095
这是一个老问题的老答案,所以我不确定在django的新版本中是否有更好的方法。我使用的是1.8.3版本,这对我很重要!在
此处粘贴代码以供参考:
相关问题 更多 >
编程相关推荐