在 Django-Oscar 中以编程方式定义 ProductAttributes 的位置

Where to programmatically define ProductAttributes in Django-Oscar

在为 Oscar Commerce 项目开发运输方式时,我发现我需要两个属性;一个包含代表产品重量的浮点值(我使用 Scale class 称重产品)和一个链接到运输容器模型的实体属性。

需要将属性分配给任何需要运送的产品 class。 Where/how 我要创建它们吗?我有以下代码,但我不确定它适合哪里。

from oscar.core.loading import get_model
ProductAttribute = get_model('catalogue', 'ProductAttribute')

ProductAttribute.objects.get_or_create(code='weight',
        product_class=[product class],
        defaults={
            'name': 'Weight',
            'type': ProductAttribute.FLOAT,
            })
ProductAttribute.objects.get_or_create(code='box',
        product_class=[product class],
        defaults={
            'name': 'Box used for shipping'
            'type': ProductAttribute.ENTITY,
        })

添加此代码的最佳位置在哪里?

标准的 Django 方法是使用 data migration.

如果您不希望自动加载数据,则可以使用 fixture.

虽然我们通常只是通过管理员设置属性。此外 PR #2448 旨在添加仪表板支持以添加属性。