#django #django-models #django-import-export
#django #django-модели #django-импорт-экспорт
Вопрос:
Я использую библиотеку django-import-export и пытаюсь реализовать виджет ForeignKey, который доступен для поиска связанных объектов с помощью Author.name вместо Author.pk. Теперь, вот сложная часть, для данного календарного года у меня есть только один автор с таким же именем, однако в следующем году имя автора будет похожим. Когда я пытаюсь импортировать, конечно, возникает проблема, в которой говорится, что более Author.name было найдено.
Есть ли предложение по решению проблемы?
Ответ №1:
Я использовал before_save_instance()
, чтобы сделать что-то подобное этому. Вот некоторый псевдокод для того, как это может работать:
class MyModelResource(ModelResource):
# Specify fields and Meta information here
def before_save_instance(self, instance, using_transactions, dry_run):
# Replace the below with your actual code
year = instance.year
author = Author.objects.filter(year=year)
instance.author = author
return instance
Это предполагает, что информация, необходимая для получения правильного автора, доступна в импортируемой строке.
Комментарии:
1. Большое вам спасибо за вашу помощь! Итак, как мне скоротать год? Должен ли я создать другую строку и удалить ее в before_save_instance?
2. @bisamov Это зависит от вашей конкретной ситуации, но в какой бы логике вам ни требовалось выполнить, вы можете сделать это в
before_save_instance()
. Если вы знаете, что год всегда будет текущим годом, например, вам не нужно было бы иметь отдельный столбец year, и вы могли бы просто фильтроватьdatetime.now().year
.3. Я пытаюсь это реализовать, но не могу сделать это правильно. У вас случайно нет ресурса, на который я мог бы взглянуть?
4. Может ли класс FullNameForeignKeyWidget (ForeignKeyWidget): использоваться для ограничения запроса на определенный год?