4

モデルのエクスポート形式を変更したいので、そのうちの 1 つに他のメタデータにはない追加のメタデータが含まれています。

両方のエクスポート形式の ModelResource サブクラスを作成できますが、ユーザーが管理インターフェイスからそれらを選択できるようにしたいと考えています。

それは次のようなものです:

class IngredientColourRelation(models.Model):
    ingredient = models.CharField()
    colour_label = models.CharField()
    metadata = models.CharField()

class IngredientColourLabelResource(resources.ModelResource):
    """Ingredient Resource class for importing and exporting."""

    ingredient = resources.Field()
    colour_label = resources.Field()

    class Meta:
        """Meta class"""
        model = IngredientColourRelation

        fields = ('id', 'ingredient', 'colour_label',)
        export_order = ('id', 'ingredient', 'colour_label',)

他のリソースは次のようになります。

class MetadataIngredientColourLabelResource(resources.ModelResource):
    """Ingredient Resource class for importing and exporting."""

    ingredient = resources.Field()
    colour_label = resources.Field()
    metadata = resources.Field()

    class Meta:
        """Meta class"""
        model = IngredientColourRelation

        fields = ('id', 'ingredient', 'colour_label', 'metadata',)
        export_order = ('id', 'ingredient', 'colour_label', 'metadata',)

次のような 2 つの Admin クラスを介して両方のリソースを登録できると考えました。

class IngredientColourLabelAdmin(ImportExportModelAdmin):
    """Ingredient import-export Admin interface"""
    resource_class = IngredientColourLabelResource

class MetadataIngredientColourLabelAdmin(ImportExportModelAdmin):
    """Ingredient import-export Admin interface"""
    resource_class = MetadataIngredientColourLabelResource

admin.site.register(IngredientColourRelation, IngredientColourLabelAdmin)
admin.site.register(IngredientColourRelation, MetadataIngredientColourLabelAdmin)

しかし、変更リスト ビューからエクスポート ボタンをクリックすると、最新のものだけが使用されます。

ユーザーがさまざまなリソース形式を選択できるようにする方法について何か提案はありますか?

4

1 に答える 1