gpt4 book ai didi

django - 如何在 Django 管理中的 TabularInline 表单集中设置默认值

转载 作者:行者123 更新时间:2023-12-04 03:16:10 25 4
gpt4 key购买 nike

如何在 django 管理员的内联中设置第一个默认行/值?

    class Employee(models.Model):
username = models.CharField(_('Username'), max_length=150, null=False, blank=False)
email = models.CharField(_('Email'), max_length=150, null=False, blank=False)

class Details(models.Model):
employee = models.ForeignKey(Employee, verbose_name=_('Employee'), blank=False, null=False)
label = models.CharField(_('Label'), max_length=150, null=False, blank=False)
value = models.CharField(_('Value'), max_length=150, null=False, blank=False)


class DetailsFormset(forms.models.BaseInlineFormSet):
def __init__(self, *args, **kwargs):
self.initial = [
{ 'label': 'first name'},
{'label': 'last name'},
{'label': 'job',}]
super(DetailsFormset, self).__init__(*args, **kwargs)

class DetailsInline(admin.TabularInline):
model = Details
formset = DetailsFormset
fieldsets = [
['', {'fields': ['employee', 'label', 'value']}]
]

class EmployeeAdmin(admin.ModelAdmin):
inlines = [DetailsInline]

但这一行不起作用
    self.initial = [
{ 'label': 'first name'},
{'label': 'last name'},
{'label': 'job',}]

如何使用 django admin 设置默认值?

最佳答案

from django.utils.functional import curry

class DetailsInline(admin.TabularInline):
model = Details
formset = DetailsFormset
extra = 3

def get_formset(self, request, obj=None, **kwargs):
initial = []
if request.method == "GET":
initial.append({
'label': 'first name',
})
formset = super(DetailsInline, self).get_formset(request, obj, **kwargs)
formset.__init__ = curry(formset.__init__, initial=initial)
return formset

从这里: Pre-populate an inline FormSet?

关于django - 如何在 Django 管理中的 TabularInline 表单集中设置默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15376874/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com