Python django导入导出管理:如何在多对多关系中导出模型名称

Python django导入导出管理:如何在多对多关系中导出模型名称,python,django,Python,Django,鉴于模型: #models.py class Author(models.Model): name = models.CharField(max_length=200) class Book(models.Model): title = models.CharField(max_length=200) author = models.ManyToManyField(Author, through = 'AuthorBook') class AuthorBook(mod

鉴于模型:

#models.py
class Author(models.Model):
    name = models.CharField(max_length=200)

class Book(models.Model):
    title = models.CharField(max_length=200)
    author = models.ManyToManyField(Author, through = 'AuthorBook')

class AuthorBook(models.Model):
    author = models.ForeignKey(Author)
    book =  models.ForeignKey(Book)
    some_info = models.CharField(max_length=200)

当我试图在Book的管理面板上导出数据时,我得到了一个错误:

“Book”对象没有属性“name”


我在这个问题上纠缠了几个小时,我能找到的最接近的答案是,但没有解决我的问题。

您指定的模型是Book,它没有name属性。我猜您的函数deterheme_livro()是用一本书作为参数调用的,您错误地调用了Author(仅仅因为变量以大写字母开头并不表示它是任何类的实例)。然后,您的方法尝试访问本书中的name属性,
Author.name
,但没有

尝试:


这将返回您的书的作者列表。

嘿,大卫,谢谢您的回复!事实上,我在第一篇文章中犯了一个错误,现在我编辑了它,你能再读一遍吗?(admin.py中的更改)。。。通过您的代码,我得到了-'ManyRelatedManager'对象没有属性'objects',谢谢!book.author.all()[0]不起作用(列表索引超出范围),但是book.author.first()起作用了!现在的问题是,如果这本书有1位以上的作者,它只显示了第一位作者,但这样就变成了“意外的数据类型”,我不知道您如何调用函数,也不知道您试图对结果做什么。你提供的环境越多,将来能够帮助你的人就越多。
#admin.py
from django.contrib import admin
from .models import Author, Book, AuthorBook
from import_export.admin import ExportMixin
from import_export import resources, fields
from import_export.widgets import ManyToManyWidget

class BookResource(resources.ModelResource):
    author = fields.Field(widget=ManyToManyWidget(Author))
    class Meta(object):
        model = Book
        exclude = ('id',)

    def dehydrate_author(self,Author):
        return Author.name
def dehydrate_livro(self,book):
    return book.author.all()