Python Django过滤器管理中的多对多字段?

Python Django过滤器管理中的多对多字段?,python,django,django-models,django-admin,Python,Django,Django Models,Django Admin,我有三个目标: Thing some fields Bucket things = models.ManyToManyField(Thing) User buckets = models.ManyToManyField(Bucket) things = models.ManyToManyField(Thing) 在管理中编辑我的“Bucket”字段时,我希望能够选择内容,但只能选择当前登录用户的“内容”列表中的内容 我该怎么做?换句话说,如何过滤Bucket admin中的

我有三个目标:

Thing
  some fields

Bucket
  things = models.ManyToManyField(Thing)

User
  buckets = models.ManyToManyField(Bucket)
  things = models.ManyToManyField(Thing)
在管理中编辑我的“Bucket”字段时,我希望能够选择内容,但只能选择当前登录用户的“内容”列表中的内容

我该怎么做?换句话说,如何过滤Bucket admin中的内容列表

非常感谢您事先提供的帮助。

可以使用或。

阅读:

有一个问题。用法与defuz给出的答案类似

与foreignkey的
formfield\u
方法类似,可以覆盖
formfield\u for多个
方法来更改 多对多字段的默认formfield。例如,如果一个所有者 可以拥有多辆汽车,而且汽车可以属于多个车主——很多人 对多个关系–您可以将汽车外键字段筛选为 仅显示用户拥有的车辆:

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)

请注意,
super()
需要参数:
返回super(MyModelAdmin,self)。formfield\u for_manytomy(db\u field,request,**kwargs)
@Travis
super()
不需要python3中的参数。请注意,
formfield\u for_for_foreignkey
用于foreignkey,和
formfield\u表示多个
表示多个表示多个表示多个表示多个。还请注意,在python3中,您可以使用
super()
而不是
super(BucketAdmin,self)
ModelAdmin.formfield_for_manytomany(db_field, request, **kwargs)¶
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)