Comments (3)
Looks like it was pretty straightforward after all. Leaving this for future reference.
All I had to do was to:
add code
property to oscar's AbstractLineAttribute
:
class AbstractLineAttribute(models.Model):
(...)
@property
def code(self):
return self.option.code
and code
serializers.CharField
to oscarapi's LineAttributeSerializer
class LineAttributeSerializer(OscarHyperlinkedModelSerializer):
code = serializers.CharField(max_length=128)
and then adding code
to fields
in BasketLineSerializer
class BasketLineSerializer(OscarHyperlinkedModelSerializer):
(...)
attributes = LineAttributeSerializer(
many=True, fields=('url', 'option', 'value', 'code'),
required=False, read_only=True)
(...)
from django-oscar-api.
Hi @kooba
You're solution is indeed ok and it is documented like this in the djangorestframework documentation.
However, to solve this properly you need to fork the basket app from oscar just to override the LineAttribute
model (https://django-oscar.readthedocs.io/en/releases-1.5/topics/fork_app.html), and you needed to override oscarapi's serializers.
You could solve it as well by just overriding oscarapi's serializers (see https://django-oscar-api.readthedocs.io/en/latest/usage/customizing_oscarapi.html), and do something like this:
from oscarapi.serializers import LineAttributeSerializer, BasketLineSerializer
class MyLineAttributeSerializer(LineAttributeSerializer):
code = serializers.SerializerMethodField()
def get_code(self, obj):
return obj.option.code
class MyBasketLineSerializer(BasketLineSerializer):
attributes = LineAttributeSerializer(
many=True, fields=('url', 'option', 'value', 'code')
required=False, read_only=True)
Good luck!
from django-oscar-api.
Thank you!
Yes of course, all the changes were applied on the fork as described in oscar api customization docs.
from django-oscar-api.
Related Issues (20)
- Unable to create an account HOT 1
- How to Login with react js HOT 16
- How to Overwrite Oscar API URL ? HOT 1
- getting HOT 2
- Weird results in attributes with patching Childs HOT 3
- AttributeError: 'NoneType' object has no attribute 'strategy' HOT 3
- Is there any good way to make price range filter with oscar api? HOT 1
- Why doesn't ProductList filter out non-public products?
- AdminProductSerializer validation
- `cookies_to_delete` is always an empty list HOT 12
- AdminProductSerializer error when trying to add products HOT 1
- Voucher discount is applied to every single product in the basket
- Add to basket api returns 403 forbidden when user is logged in HOT 5
- ImproperlyConfigured at /api/admin/products/ when a Product has an optiongroup HOT 13
- master ahead of main? HOT 1
- _ in both ApiBasketMiddleWare and translations?
- Potential problem with basket for unauthenticated users
- Inconsistency between product class and product category HOT 1
- PUT on productclasses HOT 6
- Empty attribute values cause an exception
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from django-oscar-api.