Я использую библиотеку импорта-экспорта Django, чтобы добавить опцию импорта, чтобы заполнить базу данных для одной из моих моделей (Sample
).Модель содержит поля, которые должны соответствовать столбцам файла импорта, а также ForeignKey
для другой модели, которую я хочу выбрать из выпадающего меню на странице импорта для всех импортированных Samples
.
Я попытался настроить форму импорта, чтобы включить ее, переопределив import_action
следующий этот ответ .
Это моя модель в core/models.py
:
class Sample(models.Model):
study = models.ForeignKey(Study, ...)
sample_ID = models.CharField(...)
sample_source = models.CharField(...)
brain_region = models.CharField(...)
RIN = models.CharField(...)
diagnosis = models.CharField(...)
sex = models.CharField(...)
age_at_death = models.IntegerField(...)
ApoE = models.CharField(...)
flowcell = models.CharField(...)
PMI = models.CharField(...)
А вот как я переопределяю метод import_action
в core/admin.py
:
class SampleImportForm(ImportForm):
study = forms.ModelChoiceField(queryset=None)
def __init__(self, choice_model, import_formats, *args, **kwargs):
super(SampleImportForm, self).__init__(import_formats, *args, **kwargs)
self.fields['study'].queryset = choice_model.objects.all()
class SampleAdmin(ImportExportModelAdmin):
resource_class = SampleResource
def import_action(self, request, *args, **kwargs):
super().import_action(request, *args, **kwargs)
form = SampleImportForm(Study, self.get_import_formats(), request.POST or None, request.FILES or None)
Однако, когда я пытаюсь получить доступ к странице администратора для импорта Samples
, я получаю следующееошибка: AttributeError: 'NoneType' object has no attribute 'has_header'
, которую я изо всех сил пытаюсь понять.