如何在基于查询集的字段上显示值?

How to display value on fields based on queryset?

我有这样一个案例: 型号

class Car(models.Model):
     description = models.CharField(max_length=200)
     is_available = models.BooleanField(default=False)

class Rental(models.Model):
    car = models.ManyToManyField(Car)

我的问题是,如何在 is_available = True 的租赁车型上显示汽车。在 django 管理员上? 谢谢

您可以覆盖 django 管理的 get_queryset 方法 class。

通用语法->

class MyModelAdmin(admin.ModelAdmin):
    def get_queryset(self, request):
        qs = super().get_queryset(request)
        if request.user.is_superuser:
            return qs
        return qs.filter(author=request.user)

在你的情况下,这将是 -:

class RentalAdmin(admin.ModelAdmin):
    def get_queryset(self,request):
        qs = super().get_queryset(request)
        return qs.filter(car__is_available=True)

可以参考文档here

对于 Inline 你的代码应该是 -:

class CarInline(admin.StackedInline):
    model=Rental.car.through
    #model=Car
    def get_queryset(self,request):
        qs = super().get_queryset(request)
        return qs.filter(is_available=True)

class RentalAdmin(admin.ModelAdmin):
    inlines=[CarInline]

你可以试试 django inline model admin