Джанго Оскар - Добавление опций к атрибуту продукта

Я хочу добавить несколько опций к атрибуту Product в django oscar.

По сути, я хочу сделать то же, что и в документации, но превратить его в полный пример. http://django-oscar.readthedocs.io/en/releases-1.6/topics/modelling_your_catalogue.html

Поэтому для этого я прав, полагая, что мне нужно использовать документацию по настроенной модели для создания подкласса Продукта и добавления к нему этих атрибутов. http://django-oscar.readthedocs.io/en/releases-1.6/howto/how_to_customise_models.html

Так что, если бы я взял две вышеупомянутые страницы документации и соединил код каждого из них, я бы получил что-то вроде этого?

from django.db import models

from oscar.apps.catalogue.abstract_models import AbstractProduct

class Product(AbstractProduct):
    video_url = models.URLField()

    language = AttributeOptionGroup.objects.create(name='Language')
    AttributeOption.objects.create(group=language,option='English')
    AttributeOption.objects.create(group=language,option='Croatian')

    klass = ProductClass.objects.create(name='foo', slug='bar')
    ProductAttribute.objects.create(
        product_class=klass,
        name='Language',
        code='language',
        type='option',
        option_group=language)

from oscar.apps.catalogue.models import *

Обновление 26/04/2018: https://github.com/django-oscar/django-oscar/pull/2448

Исправлено в Django Oscar, чтобы добавить возможность добавлять группу опций с помощью панели инструментов. Я думаю, что мне нужно проверить мою версию Django, так как я не вижу эту опцию на своей панели инструментов.

1 ответ

Атрибуты продукта позволяют вам устанавливать дополнительные данные о продукте, не настраивая базовые модели Django.

Согласно документации, нет, вам не нужно переопределять значение по умолчанию catalogue.Product модель. Вы должны вместо этого создать ProductClass это имеет ProductAttribute это имеет OptionsGroup ты хочешь.

Вам следует переопределить модели по умолчанию только в том случае, если вы хотите использовать эту функцию для всех ваших продуктов (независимо от их ProductClass).

По сути, вы можете сделать то, что вы сделали внутри своего обычая Product класс, и поместите его в миграцию, или сделайте то же самое через панель инструментов. Переопределение Product класс не нужен.

Другие вопросы по тегам