在Django Admin页面中,创建模型的新实例时,是否可以将某些外国密钥实例拒绝作为选择出现



假设我有三种型号:餐厅,菜单(早餐,午餐等)和食品。FoodItem有两个外国关键领域,一个是餐厅,另一个是Menucategory。Menucategory有一个外国关键领域,可去餐厅。

当我尝试通过Django Admin页面创建一个新的FoodItem时,我被要求选择一家餐厅和Menucategory,以及其他一些无关的领域,例如食物的名称或描述。但是,当我仔细查看Menucategory的选择时,我可以看到存在的所有可能存在的Menucategory,即使是那些不属于我目前为要创建的食品的餐厅的餐馆。

当我制作新的食物标准时,是否有一种方法可以获取管理页面以仅显示我选择的当前餐厅的Menucategory?

听起来您只需要限制下拉字段中使用的QuerySet即可。

https://docs.djangoproject.com/en/1.9/ref/contrib/admin/#django.contrib.admin.modeladmin.get_queryset

我也在这里粘贴了文档。

modelAdmin.get_queryset(请求)

modelAdmin上的get_queryset方法返回所有 可以由管理站点编辑的模型实例。一个用例 覆盖此方法是显示登录用户拥有的对象:

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

本质上,您只需限制要显示的内容即可。

最新更新