我有三个对象:
Thing
some fields
Bucket
things = models.ManyToManyField(Thing)
User
buckets = models.ManyToManyField(Bucket)
things = models.ManyToManyField(Thing)
在管理员中编辑我的“存储桶”字段时,我希望能够选择事物,但只能选择当前登录用户的“事物”列表中的那些事物。
我该怎么做?换句话说,如何过滤 Bucket admin 中的 Things 列表?
非常感谢您提前提供的帮助。
最佳答案
有一个formfield_for_manytomany .用法和defuz给出的答案类似。
ModelAdmin.formfield_for_manytomany(db_field, request, **kwargs)¶
Like the
formfield_for_foreignkey
method, theformfield_for_manytomany
method can be overridden to change the default formfield for a many to many field. For example, if an owner can own multiple cars and cars can belong to multiple owners – a many to many relationship – you could filter the Car foreign key field to only display the cars owned by the User:class MyModelAdmin(admin.ModelAdmin): def formfield_for_manytomany(self, db_field, request, **kwargs): if db_field.name == "cars": kwargs["queryset"] = Car.objects.filter(owner=request.user) return super(MyModelAdmin, self).formfield_for_manytomany(db_field, request, **kwargs)
关于python - Django在管理员中过滤多对多字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12170267/