我必须使用名为Event
和Registration
的模型。在这里,您可以看到我的admin.py
:
class RegistrationInline(admin.StackedInline):
model = Registration
form = RegistrationForm # inherits from ModelForm
def has_add_permission(self, request):
return False
@admin.register(Event)
class EventAdmin(admin.ModelAdmin):
form = EventForm
inlines = [RegistrationInline]
在我RegistrationForm
我有这个,因为我需要事件的pk:
def __init__(self, *args, **kwargs):
self.event = kwargs.get('instance').event # In my Registration model "Event" is a ForeignKey
super().__init__(*args, **kwargs)
当我进入管理员并参加活动时,kwargs
的输出为:
{'auto_id': 'id_%s', 'prefix': 'registration_set-0', 'error_class': <class 'django.forms.utils.ErrorList'>, 'use_required_attribute': False, 'instance': <Registration: 1>}
{'auto_id': 'id_%s', 'prefix': 'registration_set-1', 'error_class': <class 'django.forms.utils.ErrorList'>, 'use_required_attribute': False, 'instance': <Registration: 2>}
{'auto_id': 'id_%s', 'prefix': 'registration_set-2', 'error_class': <class 'django.forms.utils.ErrorList'>, 'use_required_attribute': False, 'instance': <Registration: 3>}
{'auto_id': 'id_%s', 'prefix': 'registration_set-3', 'error_class': <class 'django.forms.utils.ErrorList'>, 'use_required_attribute': False, 'instance': <Registration: 4>}
{'auto_id': 'id_%s', 'prefix': 'registration_set-__prefix__', 'empty_permitted': True, 'use_required_attribute': False}
{'auto_id': 'id_%s', 'prefix': 'registration_set-__prefix__', 'empty_permitted': True, 'use_required_attribute': False}
{'auto_id': 'id_%s', 'prefix': 'registration_set-__prefix__', 'empty_permitted': True, 'use_required_attribute': False}
我的问题是最后三行。因为没有instance
我的方法不起作用。如何删除这三行或这三行是什么意思?
答案 0 :(得分:0)
这里没有问题;这些只是Django默认在formset中添加的三个额外的空白表单。您应该检查参数是否通过:
instance = kwargs.get('instance')
if instance is not None:
self.event = instance.event