如何在Django admin中将内联ForeignKey查询集限制为实例本身

时间:2020-02-24 09:08:09

标签: python django admin inline

我有5个模型,它们的关系如下:

integer_data = [int.from_bytes(bytes.fromhex(item[0:3]), 'little') for item in data[:-2]]

我决定使用django管理员

class A(models.Model):
    pass


class B(models.Model):
    a = models.ForeignKey(A)


class C(models.Model):
    b = models.ManyToManyField(B)


class D(models.Model):
    pass


class I(models.Model):
    a = models.ForeignKey(A)
    b = models.ForeignKey(B)
    c = models.ForeignKey(C)
    d = models.ForeignKey(D)

如果太多的I实例与D相关,那么管理页面会进行很多查询,这非常耗时。因此,我通过设置formfield_for_foreignkey来禁用Django默认操作:

class IAdminInline(admin.TabularInline):
    pass

class DAdmin(admin.ModelAdmin):
    inlines = [IAdminInline, ]


相反,我使用ajax获取相应的数据,并使用javascript呈现选择窗口小部件并绑定操作,这使添加数据更加容易,因为这些窗口小部件彼此相关。页面加载速度更快,但问题在于,以上代码将清除I实例初始值,这些初始值显然已存在于变更视图页面中。

我想问如何将现有的内联对象选择窗口小部件呈现为其自己的值? Django是否提供任何功能来处理此问题?

除了使用ajax自己呈现显然存在的值外,我没有找到其他解决方案。

0 个答案:

没有答案
相关问题