Django 管理员根据另一个字段值过滤一个外字段



在我的 django 应用程序中,在管理面板中,当我转到为我的表添加/编辑表单时,我有两个外键列(组合(,main_id 和Test_id。

我会根据字段选择中的预览选择过滤test_id字段中包含的结果main_id。

在我的 admin.py 中,我尝试:

def formfield_for_foreignkey(self, db_field, request, **kwargs):
if db_field.name == "test_id":
kwargs["queryset"] = temp_case.objects.filter(main_id = <here i need the value selected on main_id combo>)
return super().formfield_for_foreignkey(db_field, request, **kwargs)

但我不知道我必须在"中写什么。

我尝试main_id__id或main_id.id,但不正确。

如何在组合中检索选择main_id值并将其传递给我的方法?

提前致谢

你可以尝试使用Django Smart Selects 它具有称为分组选择的功能

自述文件引述:

如果您有以下型号:

class Country(models.Model):
continent = models.ForeignKey(Continent)
class Location(models.Model):
continent = models.ForeignKey(Continent)
country = models.ForeignKey(Country)

并且您想在HTML选择中按大陆对国家/地区进行分组 列表中,您可以使用分组外键:

from smart_selects.db_fields import GroupedForeignKey
class Location(models.Model):
continent = models.ForeignKey(Continent)
country = GroupedForeignKey(Country, "continent")

最新更新