Джанго Оскар - Добавление опций к атрибуту продукта
Я хочу добавить несколько опций к атрибуту 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
класс не нужен.