Настройка формы импорта администратора Django для включения раскрывающейся панели - PullRequest
0 голосов
/ 26 декабря 2018

Я использую библиотеку импорта-экспорта 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', которую я изо всех сил пытаюсь понять.

...