Django -import-export всегда экспортирует один и тот же файл, несмотря на изменения в ресурсе - PullRequest
0 голосов
/ 17 апреля 2020

Здравствуйте, я новичок в Django Framework и застрял с проблемой ниже при использовании django -import-export в django панели администратора.

У меня есть связь между двумя моделями через Внешний ключ, и я хотел бы экспортировать атрибут вместо «id» связанного элемента.

Я пробовал ForeignKeyWidget не работает. Я также пытался получить заслуженный атрибут с помощью определения полей и использования подчеркивания, например «custodian__name», и не повезло.

Затем я обнаружил, что фактически не могу ничего изменить в экспортированном файле (даже не выбирая, какие поля экспортировать и т. Д.) c.) Я всегда сохранял свою работу и даже пытался перезапускать сервер после каждого изменения, но все равно не повезло. Без ошибок, я просто продолжаю экспортировать тот же самый файл, который является экспортом всех полей в базе данных.

Я не могу найти, что я делаю неправильно. Надеюсь, что кто-то может помочь

# admin.py

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

class AssetResource(resources.ModelResource):
    custodian = fields.Field(column_name = 'custodian', attribute = 'custodian',
        widget = ForeignKeyWidget(Custodian, 'name'))
    class Meta:
        model = Asset
        fields =('tag_number', 'description', 'custodian',)

class AssetAdmin(ImportExportModelAdmin, ExportMixin):
    resources_class = AssetResource

admin.site.register(Asset, AssetAdmin)


#models.py

class Asset(models.Model):
    tag_number = models.CharField(max_length=18)
    description = models.CharField(max_length=80)
    price = models.DecimalField(decimal_places=2, max_digits=8, default=123)
    custodian = models.ForeignKey(Custodian, blank=True, null=True, on_delete=models.CASCADE)

class Custodian(models.Model):
    name = models.CharField(max_length=50)
    position = models.CharField(max_length=50)
    base = models.CharField(max_length=10, default="ERB")
...