2015-12-01 2 views
1

Интеграция электронной коммерции в мой код. И столкнуться с проблемой с продуктом. Когда я обновить меня models.py с простойошибка интеграции django-oscar

class MyProduct(AbstractProduct): 
    pass 

или даже расширить свою Package модель с AbstractProduct и попытаться создать миграции появляется следующая ошибка.

catalogue.Product.product_class: (fields.E304) Reverse accessor for 'Product.product_class' clashes with reverse accessor for 'Package.product_class'. 
    HINT: Add or change a related_name argument to the definition for 'Product.product_class' or 'Package.product_class'. 
catalogue.Product.product_class: (fields.E305) Reverse query name for 'Product.product_class' clashes with reverse query name for 'Package.product_class'. 
    HINT: Add or change a related_name argument to the definition for 'Product.product_class' or 'Package.product_class'. 
catalogue.ProductAttributeValue: (fields.E336) The model is used as an intermediate model by 'ckanwrap.Package.attributes', but it does not have a foreign key to 'Package' or 'ProductAttribute'. 
catalogue.ProductCategory: (fields.E336) The model is used as an intermediate model by 'ckanwrap.Package.categories', but it does not have a foreign key to 'Package' or 'Category'. 
catalogue.ProductRecommendation: (fields.E336) The model is used as an intermediate model by 'ckanwrap.Package.recommended_products', but it does not have a foreign key to 'Package' or 'Product'. 
ckanwrap.Package.product_class: (fields.E304) Reverse accessor for 'Package.product_class' clashes with reverse accessor for 'Product.product_class'. 
    HINT: Add or change a related_name argument to the definition for 'Package.product_class' or 'Product.product_class'. 
ckanwrap.Package.product_class: (fields.E305) Reverse query name for 'Package.product_class' clashes with reverse query name for 'Product.product_class'. 
    HINT: Add or change a related_name argument to the definition for 'Package.product_class' or 'Product.product_class'. 
ckanwrap.Package.recommended_products: (fields.E335) The model is used as an intermediate model by 'ckanwrap.Package.recommended_products', but it has more than one foreign key to 'Product', which is ambiguous. You must specify which foreign key Django should use via the through_fields keyword argument. 
    HINT: If you want to create a recursive relationship, use ForeignKey("self", symmetrical=False, through="ProductRecommendation"). 

Любые предложения?

+0

Я столкнулся с той же проблемой. Вы нашли причину этого или обходного пути? – ddd

ответ

0

Если кто-то все еще сталкивается с этой проблемой, решение заключается в создании класса с тем же именем, что и oscar. В этом случае это будет Продукт.

from oscar.apps.catalogue.abstract_models import AbstractProduct 
from django.db import models 


class Product(AbstractProduct): 
    additional_field = models.CharField(max_length=200) 

from oscar.apps.catalogue.models import * 
Смежные вопросы