Python django import export ForeignKeyWidget不';不做查找
我正在尝试使用django导入导出导入xls文件 这就是我所拥有的:Python django import export ForeignKeyWidget不';不做查找,python,django,excel,django-import-export,Python,Django,Excel,Django Import Export,我正在尝试使用django导入导出导入xls文件 这就是我所拥有的: class CourseResource(resources.ModelResource): course_number = fields.Field(column_name='Kursnummer', attribute='course_number', widget=CharWidget()) school_year = fields.Field(column_name='Schuljahr', attri
class CourseResource(resources.ModelResource):
course_number = fields.Field(column_name='Kursnummer', attribute='course_number', widget=CharWidget())
school_year = fields.Field(column_name='Schuljahr', attribute='school_year',
widget=ForeignKeyWidget(model=SchoolYear, field='name'))
#other fields....
class Meta:
model = Course
exclude = ('students')
export_order = ('id', 'course_number', 'school_year')
学年模式:
class SchoolYear(models.Model):
name = models.CharField(max_length=25, unique=True)
start_date = models.DateField(verbose_name="Beginn")
end_date = models.DateField(verbose_name="Ende")
def __str__(self):
return self.name
def __unicode__(self):
return self.name
课程模式:
class Course(models.Model):
course_number = models.CharField(max_length=25, verbose_name="Kursnummer")
school_year = models.ForeignKey(SchoolYear, default=30, verbose_name="Schuljahr")
#some other fields...
students = models.ManyToManyField(Student, verbose_name="Schüler", null=True, blank=True, related_name="courses")
class Meta:
unique_together = ('course_number', 'school_year',)
verbose_name = "Kurs"
verbose_name_plural = "Kurse"
managed = True
def __str__(self):
return "%s (%s)" % (self.course_number, self.school_year)
我的excel文件中的一个示例行如下所示(第二列是课程编号,第三列是学年名称,然后是其他字段):
当我尝试在django admin中导入文件时,会收到以下错误消息:
Row number: 1 - Column 'school_year': invalid literal for int() with base 10: '2015/2016' [...]
Traceback (most recent call last):
File "/Users/amishelli/Dropbox/IMS/ims2/import_export/resources.py", line 441, in import_row
self.import_obj(instance, row, dry_run)
File "/Users/amishelli/Dropbox/IMS/ims2/import_export/resources.py", line 300, in import_obj
self.import_field(field, obj, data)
File "/Users/amishelli/Dropbox/IMS/ims2/import_export/resources.py", line 290, in import_field
field.save(obj, data)
File "/Users/amishelli/Dropbox/IMS/ims2/import_export/fields.py", line 112, in save
setattr(obj, attrs[-1], self.clean(data))
File "/Users/amishelli/Dropbox/IMS/ims2/import_export/fields.py", line 68, in clean
raise ValueError("Column '%s': %s" % (self.column_name, e))
ValueError: Column 'school_year': invalid literal for int() with base 10: '2015/2016'
我想在学年查找外文钥匙是行不通的。我做错了什么 我现在找到了答案。我的CourseAdmin缺少资源类,因此我的CourseResource没有任何效果。我补充说:
class CourseAdmin(ImportExportActionModelAdmin, ImportExportModelAdmin):
list_display = ('course_number', 'school_year', 'school_subject', 'teacher', 'lessons_per_week', 'major')
list_filter = ('school_year', 'school_subject', 'teacher')
resource_class = CourseResource
admin.site.register(Course, CourseAdmin)
工作起来很有魅力!:)
class CourseAdmin(ImportExportActionModelAdmin, ImportExportModelAdmin):
list_display = ('course_number', 'school_year', 'school_subject', 'teacher', 'lessons_per_week', 'major')
list_filter = ('school_year', 'school_subject', 'teacher')
resource_class = CourseResource
admin.site.register(Course, CourseAdmin)