python - How to alter Fields in Django and Oscar -


i making web application django-oscar, , make user field required in partner model.

my first approach override "user" field in partner model, read cannot override fields in django.

so, how 1 alter field in oscar if can't override it?

thanks!

the docs aren't clear, fortunately kind of model overriding well-supported in oscar way it's been engineered.

but instead of sub-classing oscar.apps.partner.partner model , overriding field need make own myproject.partner app.

the key thing note models in oscar implemented abstract models. oscar checks see if you've overridden of framework apps, if not oscar define concrete model abstract ones. if have overridden framework app though first try load concrete model, fallback it's own models haven't touched.

see docs here:
https://django-oscar.readthedocs.org/en/releases-1.0/topics/customisation.html#fork-the-oscar-app

first run this:

$ ./manage.py oscar_fork_app partner myproject/ 

which create skeleton of overridden app myproject.partner

then edit settings:

# settings.py  oscar import get_core_apps # ... installed_apps = [     # non-oscar apps ] + get_core_apps(['myproject.partner']) 

and in myproject/partner/models.py:

from django.db import models  oscar.apps.partner.abstract_models import abstractpartner   class partner(abstractpartner):     user = models.foreignkey(...customised here...)   oscar.apps.partner.models import * 

since imported them @ bottom them partner.stockrecord , partner.stockalert models come oscar normal, use customised partner model automatically everywhere.

if want use abstracted class loading apparatus oscar uses can (and confirm override working):

in [1]: oscar.core.loading import get_class  in [2]: partner = get_class('partner.models', 'partner')  in [3]: print partner <class 'myproject.partner.models.partner'>  in [4]: stockalert = get_class('partner.models', 'stockalert')  in [5]: print stockalert <class 'oscar.apps.partner.models.stockalert'> 

Comments

Popular posts from this blog

node.js - Mongoose: Cast to ObjectId failed for value on newly created object after setting the value -

gradle error "Cannot convert the provided notation to a File or URI" -

ios - Possible to get UIButton sizeThatFits to work? -