例如:
class Foo(models.Model):
bar = models.OneToOneField(
'app.Bar',
limit_choices_to=Q(type=1) & Q(foo=None) | Q(foo=instance)
)
class Bar(models.Model):
TYPE_CHOICE = (
(0, 'hello'),
(1, 'world')
)
type = models.SmallIntegerField(
choices=TYPE_CHOICE,
default=0
)
我想在Django admin中只显示这些具有type = 1
的条形图,与Foo的关系没有关系,并显示已编辑实体的链接条形图(如果是)。
当然,我们可以通过覆盖formfield_for_foreignkey
的{{1}}方法来实现,但我们希望通过admin.ModelAdmin
执行此操作。
如何获取已编辑实体的实例?
答案 0 :(得分:4)
如果将callable传递给limit_choices_to
,则该callable没有引用当前实例。因此,您无法根据当前实例进行过滤。
还有其他几种方法可以实现您的目标,例如覆盖您提到的formfield_for_foreignkey()
,或覆盖表单__init__()
方法中的formfield查询集。 limit_choices_to
只是不是其中之一。