Django Import导出没有ID的数据



我试图将数据从Django导出到Excel,但每件事都在我身后,当我导出Excel文件时,Django只导出id:输入图片描述

我试着走在一些教程后面,比如:https://django-import-export.readthedocs.io/en/latest/api_widgets.html和Django调用'期望得到一个数字,但得到一个字符串。

在Django App中,我有:models.py

from pyexpat import model
from statistics import mode
from django.db import models
from django.contrib.auth.models import User
from django.db.models.base import Model
from django.forms import IntegerField

class Post(models.Model):
name = models.CharField(max_length=150)
def __str__(self):
return str(self.name)

class Person(models.Model):
post = models.ForeignKey(Post, on_delete=models.CASCADE)
name = models.CharField(max_length=100)
def __str__(self):
return f"({self.name} is {self.post} "

class Room(models.Model):
name = models.CharField(max_length= 150 )
def __str__(self):
return str(self.name)

class Classification(models.Model):
name = models.ForeignKey(Person, on_delete=models.CASCADE)
room = models.ForeignKey(Room, on_delete=models.CASCADE)
date = models.DateField(auto_created=False)
def __str__(self):
return f"({self.name} Take {self.room}  at {self.date})"

admin.py

from django.contrib import admin
from import_export.admin import ImportExportModelAdmin
from .models import *
from import_export import fields, resources
from import_export.widgets import ForeignKeyWidget

@admin.register(Post, Room, Classification, Person)
class TestappImportExport(ImportExportModelAdmin):
pass
class Classificationresource(resources.ModelResource):
name = fields.Field(
column_name='name',
attribute='name',
widget=ForeignKeyWidget(Person, 'name'))
room = fields.Field(
column_name = 'room',
attribute = 'room',
widget= ForeignKeyWidget(Room, 'name'))
class Meta:
fields = ('name', 'room')

即使我试图将Classificationresource(resources.ModelResource)类的Classificationresource(resources.ModelResource)反转为Classificationresource(resources.ModelResource),我仍然得到id而不是Persons或Rooms的名称。

所以请帮我解决这个问题,我累了一直搜索,我觉得我花了时间。

来自文档:

在定义ModelResource字段时,可以遵循模型关系:

class BookResource(resources.ModelResource):
class Meta:
model = Book
fields = ('author__name',)

那么我试试这个:

class Classificationresource(resources.ModelResource):
class Meta:
model = Classification
fields = ('id', 'name__name', 'room__name', 'date')

编辑:还有必要添加

@admin.register(Classification) 
class TestappImportExport(ImportExportModelAdmin): 
resource_class = Classificationresource

最新更新