And*_*rew 23 python django django-models django-admin
我有三个对象:
Thing
some fields
Bucket
things = models.ManyToManyField(Thing)
User
buckets = models.ManyToManyField(Bucket)
things = models.ManyToManyField(Thing)
Run Code Online (Sandbox Code Playgroud)
在管理员中编辑我的"Bucket"字段时,我希望能够选择Things,但只能选择当前登录用户的"Things"列表中的那些内容.
我怎样才能做到这一点?换句话说,如何在Bucket管理员中过滤事物列表?
非常感谢您的帮助.
aru*_*mar 29
有一个formfield_for_manytomany.用法类似于defuz给出的答案.
Run Code Online (Sandbox Code Playgroud)ModelAdmin.formfield_for_manytomany(db_field, request, **kwargs)¶喜欢的
formfield_for_foreignkey方法,formfield_for_manytomany可以重写方法以更改多对多字段的默认表单字段.例如,如果所有者可以拥有多辆汽车并且汽车可以属于多个所有者 - 多对多关系 - 您可以过滤汽车外键字段以仅显示用户拥有的汽车:Run Code Online (Sandbox Code Playgroud)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)
def*_*fuz 24
阅读文档:
class BucketAdmin(admin.ModelAdmin):
def formfield_for_foreignkey(self, db_field, request, **kwargs):
if db_field.name == "things":
kwargs["queryset"] = Things.objects.filter(...)
return super(BucketAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13701 次 |
| 最近记录: |