formfield_for_foreignkey的用法
时间: 2023-08-02 17:11:45 浏览: 118
`formfield_for_foreignkey`是Django Admin中的一个方法,用于定制外键字段的表单控件。当我们在Admin中编辑一个模型时,如果该模型中包含外键字段,Django会自动为该字段生成一个下拉框,用于选择关联的对象。`formfield_for_foreignkey`方法允许我们自定义这个下拉框的选项。
下面是一个示例,假设我们有两个模型`Author`和`Book`,Book模型中有一个外键字段指向Author模型:
```python
from django.contrib import admin
from .models import Author, Book
class BookAdmin(admin.ModelAdmin):
def formfield_for_foreignkey(self, db_field, request, **kwargs):
if db_field.name == "author":
kwargs["queryset"] = Author.objects.filter(name__startswith='J')
return super().formfield_for_foreignkey(db_field, request, **kwargs)
admin.site.register(Book, BookAdmin)
```
在上面这个示例中,我们重载了`BookAdmin`的`formfield_for_foreignkey`方法,并通过筛选出以J开头的作者对象,来定制了`author`字段的下拉框选项。其他的外键字段也可以通过类似的方式来进行自定义。
阅读全文