Я определил свою модель с различными полями. Некоторые из них - это настраиваемые поля, которые я использую для проверки данных кредитной карты, используя файл fields.py моего приложения. Источник - here.Добавление настраиваемых полей в администратор Django
class Transaction(models.Model):
card_name = models.CharField()
card_number = CreditCardField(required=True)
security_code = VerificationValueField(required=True)
expiry_date = ExpiryDateField(required=True)
Я определил ModelForm в своем файле forms.py.
class TransactionForm(forms.ModelForm):
class Meta:
model = Transaction
fields = "__all__"
И я добавил форму в файл admin.py.
class TransactionAdmin(admin.ModelAdmin):
form = TransactionForm
def get_fieldsets(self, *args, **kwargs):
return (
(None, {
'fields': ('card_name', 'card_number'),
}),
)
admin.site.register(Transaction, TransactionAdmin)
Однако пользовательские поля, кажется, не отображаются на панели администрирования. Проделав тонну исследований, я нашел this, который, казалось бы, был бы решением, за исключением того, что он не работает. Я пробовал всевозможные вещи, включая добавление кортежа полей с отсутствующими полями, чтобы заставить его работать, но без кубиков. И да, я много раз искал.
Я получаю ошибку, когда после решения в последней ссылке это:
Unknown field(s) (card_number) specified for Transaction. Check fields/fieldsets/exclude attributes of class TransactionAdmin.
Запуск Django 1.7.4, Python 3.
Спасибо за ответ. Кажется, я все еще получаю такую же ошибку после того, как вы сказали. – user2942863
См. Мой обновленный ответ. – Kedar
Это смешно, потому что я на самом деле делал это раньше, но я не был уверен, что считается хорошей практикой разделить/повторить различные поля модели и сформировать их в два отдельных файла. Но я думаю, что это имеет смысл, учитывая, что поля django-creditcard на самом деле образуют поля, а не поля модели. Спасибо за разъяснение. Еще один вопрос: будут ли какие-либо свойства, которые я укажу в моделях, также наследуются полями формы? – user2942863