首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何向InlineFormsets添加自定义字段?

要向InlineFormsets添加自定义字段,您需要遵循以下步骤:

  1. 首先,在您的models.py文件中定义您的模型和InlineFormsets。例如:
代码语言:python
代码运行次数:0
复制
from django.db import models
from django.forms import Textarea
from django.contrib import admin

class Author(models.Model):
    name = models.CharField(max_length=100)

class Book(models.Model):
    title = models.CharField(max_length=100)
    author = models.ForeignKey(Author, on_delete=models.CASCADE)

class BookInline(admin.TabularInline):  # 或者使用 admin.StackedInline
    model = Book
    extra = 1
  1. 在您的admin.py文件中,将InlineFormsets添加到您的模型管理中:
代码语言:python
代码运行次数:0
复制
from django.contrib import admin
from .models import Author, Book

class BookInline(admin.TabularInline):
    model = Book
    extra = 1

class AuthorAdmin(admin.ModelAdmin):
    inlines = [
        BookInline,
    ]

admin.site.register(Author, AuthorAdmin)
  1. 要向InlineFormsets添加自定义字段,您需要在admin.py文件中重写formfield_for_dbfield方法。例如,如果您想要将Book模型中的title字段的widget更改为Textarea
代码语言:python
代码运行次数:0
复制
from django import forms
from django.contrib import admin
from .models import Author, Book

class BookInlineForm(forms.ModelForm):
    class Meta:
        model = Book
        fields = '__all__'
        widgets = {
            'title': Textarea(attrs={'rows': 2, 'cols': 40}),
        }

class BookInline(admin.TabularInline):
    model = Book
    extra = 1
    form = BookInlineForm

class AuthorAdmin(admin.ModelAdmin):
    inlines = [
        BookInline,
    ]

admin.site.register(Author, AuthorAdmin)

现在,当您在Django管理界面中添加或编辑Book对象时,title字段将显示为Textarea,而不是默认的文本输入框。

这就是向InlineFormsets添加自定义字段的方法。如果您需要添加其他自定义字段,只需在widgets字典中添加更多条目即可。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券