【问题标题】:How to exclude some query from inline Django admin model?如何从内联 Django 管理模型中排除一些查询?
【发布时间】:2018-03-10 15:07:08
【问题描述】:

Django 2.0.3,Python 3.6.1

我尝试过滤内联管理模型(Django Admin)上 ForeignKey 字段的 QuerySet。

# ./app/models.py

class Product(models.Model):
    name = models.CharField(max_length=255)

class Color(models.Model):
    name = models.CharField(max_length=255)

class Price(models.Model):
    product = models.ForeignKey(Product, on_delete=models.CASCADE)
    color = models.ForeignKey(Color, on_delete=models.CASCADE)
    price = models.PositiveSmallIntegerField()


# ./app/admin.py

class PriceInlineAdmin(admin.TabularInline):
    model = Price

@admin.register(Product)
class ProductAdmin(admin.ModelAdmin):
    list_display = ('id',)
    inlines = [
        PriceInlineAdmin
    ]

如何从PriceInlineAdmin QuerySet 中排除名称为blue 的颜色?

【问题讨论】:

标签: python django django-admin


【解决方案1】:

我会尝试这样做

class PriceInlineAdmin(admin.TabularInline):
    def formfield_for_foreignkey(self, db_field, request, **kwargs):
        if db_field.name == "name":
            kwargs["queryset"] = Price.objects.exclude(color__name="blue")
        return super().formfield_for_foreignkey(db_field, request, **kwargs)

【讨论】:

    猜你喜欢
    • 2020-02-18
    • 2011-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多