django admin 新增时不显示某个字段
时间: 2023-09-12 07:13:17 浏览: 348
要在 Django Admin 中隐藏某个字段,可以使用 `exclude` 属性或自定义表单的 `fields` 属性。
1. 使用 `exclude` 属性
在模型的 `admin.py` 文件中,可以使用 `exclude` 属性来排除不需要显示的字段。例如,如果要隐藏 `is_published` 字段,可以这样做:
```python
from django.contrib import admin
from .models import Post
class PostAdmin(admin.ModelAdmin):
exclude = ('is_published',)
admin.site.register(Post, PostAdmin)
```
2. 自定义表单的 `fields` 属性
如果需要更精细地控制表单中的字段,则可以自定义表单并指定 `fields` 属性。例如,如果要隐藏 `is_published` 字段,可以这样做:
```python
from django import forms
from django.contrib import admin
from .models import Post
class PostForm(forms.ModelForm):
class Meta:
model = Post
fields = '__all__'
exclude = ('is_published',)
class PostAdmin(admin.ModelAdmin):
form = PostForm
admin.site.register(Post, PostAdmin)
```
在这个例子中,我们重载了 `PostForm` 并指定了 `exclude` 属性来排除 `is_published` 字段,然后将 `PostForm` 分配给 `PostAdmin` 的 `form` 属性。这将导致 Django Admin 在创建或编辑 `Post` 对象时使用我们自定义的表单。
阅读全文