Python Django Admin中的过滤器内联字段

Python Django Admin中的过滤器内联字段,python,django,django-models,django-admin,Python,Django,Django Models,Django Admin,我有以下型号: class Provider(models.Model): name = models.CharField() ... class Article(models.Model): provider = models.ManyToManyField(Provider) ... class Invoice(models.Model): provider = models.ForeignKey(Provider) ... class

我有以下型号:

class Provider(models.Model):
    name = models.CharField()
    ...

class Article(models.Model):
    provider = models.ManyToManyField(Provider)
    ...

class Invoice(models.Model):
    provider = models.ForeignKey(Provider)
    ...

class ArticleInvoice(models.Model):
    article = models.ForeignKey(Article)
    invoice = models.ForeignKey(Invoice)
    ... #qty, status, etc
我的管理员看起来像:

class ArticleInvoiceInline(admin.TabularInline):
    model = ArticleInvoice

class InvoiceAdmin(models.Model):
    inlines = [ArticleInvoiceInline]

admin.site.register(Invoice, InvoiceAdmin)
问题是:

创建发票时我必须选择一个提供者,然后添加一些物品发票,该物品发票有一个提供者的物品,当我为物品发票选择物品时,它会显示所有物品


我想应用一个过滤器,这样我只能在InvoiceAdmin中创建Article Invoices,其中Articles与Invoice

具有相同的提供者。您需要覆盖表单并将逻辑放入新表单中。ModelForm,这里有很多关于如何做到这一点的例子。