微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将外键添加到 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)

我收到以下错误

enter image description here

我正在从 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_idsubject_name

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。