В настоящее время мне нужно удалить некоторые поля из представления изменений, если их значения Нет ![enter image description here](https://i.stack.imgur.com/rQZD9.png)
Итак, у меня есть модель администрирования снятия средств, например:
class WithdrawalsAdminForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(WithdrawalsAdminForm, self).__init__(*args, **kwargs)
none_fields = []
for single_field in self.fields:
self.fields[single_field].disabled = True
if self.initial[single_field] == None:
none_fields.append(single_field)
if none_fields:
for single_none_field in none_fields:
self.fields.pop(single_none_field)
class WithdrawalsAdmin(admin.ModelAdmin):
list_display = ('get_email', 'get_phone_number', 'currency', 'method', 'amount', 'status', 'created')
list_display_links = ('get_email', 'get_phone_number', 'currency', 'method', 'amount', 'status', 'created')
list_filter = [WithdrawalsStatusFilter] #just a custom list filter
change_form_template = 'admin/backend/withdrawals_change_form.html'
form = WithdrawalsAdminForm
fields = (
'id',
'get_email',
'get_phone_number',
'get_full_name',
'currency',
'method',
'to_bank',
'to_address',
'to_card',
'amount',
'status',
'transaction_id',
'created',
'submitted',
'confirmed',
)
readonly_fields = (
'id',
'get_email',
'get_phone_number',
'get_full_name',
'created',
)
def has_add_permission(self, request, obj=None):
return False
def get_queryset(self, request):
qs = super(WithdrawalsAdmin, self).get_queryset(request)
return qs.filter(Q(method=1) | Q(method=4))
def get_email(self, obj):
return obj.user.email
get_email.short_description = 'User email'
get_email.admin_order_field = 'EMAIL'
def get_phone_number(self, obj):
return obj.user.phone_number
get_phone_number.short_description = 'User phone number'
get_phone_number.admin_order_field = 'PHONE NUMBER'
def get_full_name(self, obj):
try:
user_kyc = UserKyc.objects.get(user=obj.user)
return decrypt_string(user_kyc.full_name)
except:
return None
get_full_name.short_description = 'User full name'
get_full_name.admin_order_field = 'FULL NAME'
admin.site.register(Withdrawals, WithdrawalsAdmin)
Но он вернул мне следующую ошибку:
"Ключ 'to_address' не найден в 'WithdrawalsForm'. Возможны следующие варианты: сумма, валюта, метод, статус, to_bank."
сумма, валюта, метод, статус, to_bank все имеют значение not None в объекте
to_address значение None, я также пытался распечатать любое поле, которое отсутствует в if self.initial[single_field] == None:
и получил правильное имя поля (включая to_address в нем), которое имеет значение None.
Как исключить поле, имеющее значение None, из представления изменений?