假设我有三种型号:餐厅,菜单(早餐,午餐等)和食品。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)
本质上,您只需限制要显示的内容即可。