Доброго времени суток.
Я разрабатываю магазин на Django-Oscar и мне нужно что бы для каждого продукта вводить уровень налога на него.
Я сначала добавил поле
tax_rate
в самом продукте:
from django.utils.translation import ugettext_lazy as _
from django.db import models
from oscar.apps.partner.abstract_models import AbstractStockRecord
from django.core.validators import MinValueValidator
class StockRecord(AbstractStockRecord):
tax_rate = models.DecimalField(
_("Tax rate"), decimal_places=2, max_digits=12,
blank=True, null=True, validators=[MinValueValidator(0)])
from oscar.apps.partner.models import *
Теперь нужно добавить это поле в админке. Этого можно достичь, если в ядре Oscar немного подправить
apps/dashboard/catalogue/forms.py:
class StockRecordForm(forms.ModelForm):
def __init__(self, product_class, user, *args, **kwargs):
# The user kwarg is not used by stock StockRecordForm. We pass it
# anyway in case one wishes to customise the partner queryset
self.user = user
super(StockRecordForm, self).__init__(*args, **kwargs)
# If not tracking stock, we hide the fields
if not product_class.track_stock:
del self.fields['num_in_stock']
del self.fields['low_stock_threshold']
else:
self.fields['price_excl_tax'].required = True
self.fields['num_in_stock'].required = True
self.fields['tax_rate'].required = True # добавил
class Meta:
model = StockRecord
fields = ['partner', 'partner_sku', 'price_currency', 'price_excl_tax', 'tax_rate', # добавил
'price_retail', 'cost_price', 'num_in_stock', 'low_stock_threshold',]
Все прекрасно работает. Но это не хорошо изменять исходники.
Тогда я форкнул приложение
apps.dashboard.catalogue
, потом в нем(локальном) создал файл
forms.py
, в которым добавил
class StockRecordForm(forms.ModelForm)
(уже подправленый), но всеравно не работает.
Кто-то может помочь мне? Буду очень благодарен за помощь.
П.С. извините за мой плохой русский.