1
我读过文档并尝试实现默认表单的覆盖,以仅显示属于我的管理员中当前用户(Publisher)的项目。我有一个名为sub_type的对象的SimpleSubscriber模型,它是模型Product的一个ForeignKey。还有一个发布者模型,SimpleSubscriber和Product都有称为发布者的ForeignKey对象。在我的admin.py我有这样的:Django-Admin替代外键字段的默认表单
def formfield_for_foreignkey(self, db_field, request, **kwargs):
if db_field.name == "sub_type":
kwargs["queryset"] = SimpleSubscriber.objects.filter(sub_type=request.user)
return super(SimpleSubscriberAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs)
在本文档中,它原本有
kwargs["queryset"] = SimpleSubscriber.objects.filter(owner=request.user)
但我得到“FieldError:无法解析关键词‘所有者’到现场”,所以我代替业主与sub_type,但是用订阅者填充列表。它应该是一个sub_types(产品)列表。
如何获取此列表以仅显示属于当前用户(发布者)的子类型(产品)?
所以我在这里回答我自己的问题。 DEF formfield_for_foreignkey(个体,db_field,请求,** kwargs): 如果db_field.name == “sub_type”: 亚型= Product.objects.all() 如果不是request.user.is_superuser: kwargs [“查询集“] = subtype.filter(publisher = request.user) else: kwargs [”queryset“] = subtype return super(SimpleSubscriberAdmin,self).formfield_for_foreignkey(db_field,request,** kwargs) –