Я пишу небольшое приложение, чтобы разрешить поле общего доступа AddThis в списке изменений администратора django, чтобы позволить пользователю поделиться объектом, который они редактируют в настоящее время (а также увидеть счет общего ресурса):
![enter image description here](https://i.stack.imgur.com/nJP0Z.png)
Взяв в качестве примера простой BlogEntry, я создал собственный ModelAdmin:
class AddThisAdmin(admin.ModelAdmin):
addthis_config = {
'title_field' : None,
'description_field' : None,
'url_field' : None,
'image_field' : None,
}
def get_form(self, request, obj=None, *args, **kwargs):
metaform = super(AddThisAdmin, self).get_form(request, obj, **kwargs)
if obj:
# Grab users config and find the fields they specified ...
metaform.base_fields['add_this'] = AddThisField(self.add_this)
return metaform
Что унаследовано у пользователей BlogEntryAdmin примерно так:
class BlogEntryAdmin(admin.ModelAdmin, AddThisAdmin):
addthis_config = {
'title_field' : 'blog_title',
'description_field' : 'blurb',
}
, где addthis_config
позволяет пользователю указать поля в своем объекте BlogEntry, из которых можно извлечь заголовок / описание / URL и изображение, используемое в AddThis. Это все работает очень хорошо, пока я не решу использовать пользовательский набор полей в BlogEntryAdmin:
class BlogEntryAdmin(admin.ModelAdmin, AddThisAdmin):
addthis_config = {
'title_field' : 'blog_title',
'description_field' : 'blurb',
}
fieldsets = [{ ... }]
'BlogEntry.fieldsets 0 [' fields ']' относится к полю add_this, которое отсутствует в форме.
Я понимаю, что это происходит потому, что администратор django выполняет проверку наборов полей (django.contrib.admin.validation) в классе BlogEntryAdmin, прежде чем он будет фактически создан (и мое пользовательское поле вставлено).
tldr : Есть ли способ, которым я могу сказать django.contrib.admin.validation
игнорировать поле в наборе полей?