django - 将外键添加到 Django 导入导出
问题描述
我正在尝试使用 Django_Import Export 从 csv 导入数据。我看到了其他 SO 帖子,但他们没有帮助。下面是型号
模型.py
class TblSubject(amdl.AagamBaseModel):
subject_id = models.AutoField(primary_key=True)
subject_name = models.CharField(max_length=20)
standard = models.ForeignKey('TblStandard', models.DO_NOTHING)
remembrance_credit = models.IntegerField(default=40)
applied_knowledge_credit = models.IntegerField(default=30)
understanding_credit = models.IntegerField(default=30)
subject_credit = models.IntegerField(default=100)
class Meta:
db_table = 'tblsubject'
def __str__(self):
return f'{self.subject_name}'
class SubjectChapter(amdl.AagamBaseModel):
subject_chapter_id = models.AutoField(primary_key=True)
subject = models.ForeignKey('TblSubject', on_delete=models.CASCADE)
chapter_id = models.IntegerField()
chapter_name = models.CharField(max_length=150)
remembrance_credit = models.IntegerField()
applied_knowledge_credit = models.IntegerField()
understanding_credit = models.IntegerField()
chapter_credit = models.IntegerField()
class Meta:
db_table = 'subject_chapter'
def __str__(self):
return f'{self.chapter_id} {self.chapter_name} : {self.subject}'
这是 admin.py
from django.contrib import admin
from import_export import resources, fields
from import_export.widgets import ForeignKeyWidget
from .models import SubjectChapter, TblSubject
from import_export.admin import ImportExportModelAdmin
class SubjectChapterResource(resources.ModelResource):
class Meta:
model = SubjectChapter
import_id_fields = ('subject_chapter_id',)
subject = fields.Field(
column_name='subject_name',
attribute='subject_name',
widget=ForeignKeyWidget(TblSubject, 'subject_id'))
class SubjectChapterAdmin(ImportExportModelAdmin):
resource_class = SubjectChapterResource
admin.site.register(SubjectChapter, SubjectChapterAdmin)
我得到以下错误
我正在从 csv 插入 SUBJECTCHAPTER 的数据,其中 SUBJECT 列是 TBLSUBJECT 的外键,它包含 TBLSUBJECT 的名称。
解决方案
改变这个
class SubjectChapterResource(resources.ModelResource):
class Meta:
model = SubjectChapter
import_id_fields = ('subject_chapter_id',)
subject = fields.Field(
column_name='subject_name',
attribute='subject_name',
widget=ForeignKeyWidget(TblSubject, 'subject_name'))
从subject_id
到subject_name
推荐阅读
- sql - 修复存储过程pl/sql中的代码(缺少右括号)
- algorithm - 将数组划分为满足条件的相等大小的子集
- javascript - Three.js - 应用类似于 Blender 的旋转
- ios - Mapbox React Native IOS
- objective-c - NSPanel 使用 PyObjC 以 NSWindow 的样式初始化
- typescript - TypeScript Partials:如何将特定字段从一个对象映射到另一个对象
- ruby-on-rails - 应用程序遇到以下错误:在任何源 + ruby 2.5.0 + rails 6 中找不到 rake-13.0.3
- google-cloud-dataflow - apache Beam 的 StartBundle 正在提交奇怪的错误
- flutter - Flutter SVG有些颜色没有显示
- image - 如何提高我的 Nuxt 站点的 LCP 分数?