django中admin.py一般添加什么内容,举例
时间: 2023-06-05 20:06:50 浏览: 55
:在admin.py中,我们通常会添加一些管理页面的配置,例如定义model的展示方式、定义页面布局、自定义查询、导出、过滤等功能。以下是一个简单的示例:
from django.contrib import admin
from .models import Article
class ArticleAdmin(admin.ModelAdmin):
list_display = ('title', 'author', 'pub_date')
admin.site.register(Article, ArticleAdmin)
以上代码定义了一个名为Article的model,并将它注册到admin后台。我们还定义了ArticleAdmin类,用于自定义展示方式。例如,我们希望在管理页面中展示文章标题、作者和发布日期,就可以通过定义list_display属性来实现。
相关问题
如何在Django中admin.py的inline函数中添加数据验证
在 Django Admin 中,如果您想要在 `inline` 中添加数据验证,可以使用 `clean()` 方法。`clean()` 方法是模型实例的方法,用于在保存实例之前执行验证。当您使用 Django 的表单或模型表单进行数据验证时,`clean()` 方法会在验证之前被调用。在 `clean()` 方法中,您可以访问模型实例的所有属性,并执行任何自定义的验证逻辑。如果验证失败,您可以引发 `ValidationError` 并防止保存模型实例。
下面是一个示例,假设我们有两个模型 `Author` 和 `Book`,每个作者可以有多本书。我们想要在编辑作者时,确保所有书籍的名称都是唯一的。我们可以使用以下方法来实现:
```python
from django.core.exceptions import ValidationError
from django.forms.models import BaseInlineFormSet
from django.contrib import admin
from .models import Author, Book
class BookInlineFormSet(BaseInlineFormSet):
def clean(self):
super().clean()
book_names = set()
for form in self.forms:
if form.cleaned_data.get('DELETE') is True:
continue
book_name = form.cleaned_data.get('name')
if book_name in book_names:
raise ValidationError('Duplicate book name')
book_names.add(book_name)
class BookInline(admin.TabularInline):
model = Book
formset = BookInlineFormSet
class AuthorAdmin(admin.ModelAdmin):
inlines = [BookInline]
admin.site.register(Author, AuthorAdmin)
```
在上面的示例中,我们定义了一个名为 `BookInlineFormSet` 的自定义表单集,用于验证 `inline` 表单中的书籍名称是否唯一。如果发现重复的书籍名称,我们将引发 `ValidationError` 并阻止保存模型实例。我们还将 `BookInline` 类的 `formset` 属性设置为我们的自定义表单集,以便 Django Admin 在编辑作者时使用它。
请注意,我们在 `clean()` 方法中使用 `form.cleaned_data.get('DELETE')` 检查表单是否被标记为删除。这是因为 Django Admin 中的 `inline` 表单可能包含已删除或尚未保存的表单,这些表单可能会在表单集中引发错误。通过检查 `DELETE` 属性,我们可以跳过这些表单并确保验证仅适用于实际编辑的表单。
django-admin.py
`django-admin.py` 是 Django 框架中的命令行工具,用于执行一些常用的管理操作。通过在终端中输入 `django-admin.py` 命令,可以列出 Django 支持的所有命令列表。一些常用的命令如下:
- `startproject <projectname>`:创建一个新的 Django 项目。
- `startapp <appname>`:在当前项目中创建一个新的 Django 应用。
- `runserver`:启动 Django 开发服务器。
- `makemigrations`:根据当前 Django 项目中的模型生成数据库迁移文件。
- `migrate`:根据数据库迁移文件更新数据库结构。
- `createsuperuser`:在 Django 项目中创建一个超级用户。
- `shell`:启动 Django shell,用于在命令行中进行 Django 应用的交互式调试。