[英]How to Import from Import-Export(Admin integration) Django with choices?
我有一個 model:
class Student(models.Model):
TITLE = (
('Title_Mr', ('Mr')),
('Title_Ms', ('Ms')),
)
Name = models.CharField(max_length = 25, default = '')
Title = models.CharField(max_length = 32, choices = TITLE, blank=True, null = True)
...
通過選擇和導入導出功能,我想導入具有“先生”或“女士”作為標題值的學生。
我嘗試的是從這個答案Django 導入導出選擇字段
但顯然這是為了出口? 如果我想導入它怎么辦。 這是我的資源.py
from import_export import resources, fields
從 main.models 導入 Schulungsteilnehmer
class StudentsResource(resources.ModelResource):
Title = fields.Field(attribute='get_Title_display', column_name=('Title'))
class Meta:
model = Student
exclude=('id',)
import_id_fields = ('StudentID',)
我可以毫無問題地導入,但選擇字段為空,例如,當我在管理面板中單擊學生進行編輯時。 如何將值保存為選擇選擇值?
查看文檔以獲取選擇:
每個元組中的第一個元素是要在 model 上設置的實際值,第二個元素是人類可讀的名稱。
因此,在您的情況下,“Title_Mr”或“Title_Ms”將是存儲在數據庫中的值。
這意味着如果您在Resource
中定義Title
字段,您將能夠成功導入,如下所示:
title = fields.Field(attribute='title', column_name='Title')
(我根據樣式指南將字段名稱設為小寫)
attribute
是將要設置的 Model class 上的屬性。
column_name
是導入文件中 header 的名稱。
這僅在導入文件中的數據與choices
聲明匹配時才有效(例如“Title_Mr”)
但是,您說源數據是“先生”或“女士”。 要解決這個問題,最簡單的方法是讓“先生”和“女士”成為choices
聲明的值:
TITLE = (
('Mr', ('Mr')),
('Ms', ('Ms')),
)
但如果這是不可能的,那么您將不得不創建一個自定義小部件,它可以解析源數據(例如'Mr')並將其轉換為正確的值(例如'Title_Mr')。
有關創建自定義小部件的幫助, 源代碼中有示例。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.