Last active
April 19, 2019 22:12
-
-
Save vladimirmyshkovski/a5e94510eb929010ed9870207e2a5e91 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from django.db.models import ForeignKey, CASCADE, SET_NULL, ManyToManyField | |
from django.utils.translation import ugettext_lazy as _ | |
from model_utils.fields import StatusField | |
from model_utils import Choices | |
from example.core.models import BaseModel, HashableModel | |
class Order(BaseModel, HashableModel): # type: ignore | |
client = ForeignKey( | |
"clients.Client", | |
on_delete=CASCADE, | |
related_name="orders", | |
verbose_name=_("Client"), | |
) | |
master = ForeignKey( | |
"masters.Master", | |
on_delete=SET_NULL, | |
related_name="orders", | |
verbose_name=_("Master"), | |
null=True | |
) | |
services = ManyToManyField("services.Service") | |
class OrderProposal(BaseModel, HashableModel): # type: ignore | |
STATUS = Choices( | |
("approved", _("Published")), | |
("waiting", _("Waiting")), | |
("canceled", _("Canceled")) | |
) | |
status = StatusField(default="approved") | |
order = ForeignKey( | |
"orders.Order", | |
on_delete=CASCADE, | |
related_name="proposals", | |
verbose_name=_("Order") | |
) | |
master = ForeignKey( | |
"masters.Master", | |
on_delete=CASCADE, | |
related_name="proposals", | |
verbose_name=_("Master") | |
) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from rest_framework.serializers import ModelSerializer | |
from example.core.serializers import HashableModelSerializerMixin | |
from example.clients.serializers import ClientSerializer | |
from example.masters.serializers import MasterSerializer | |
from example.services.serializers import ServiceSerializer | |
from example.orders.models import Order, OrderProposal | |
class OrderProposalSerializer(HashableModelSerializerMixin, ModelSerializer): | |
master = MasterSerializer() | |
class Meta: | |
model = OrderProposal | |
exclude = ("is_removed", "order") | |
class OrderSerializer(HashableModelSerializerMixin, ModelSerializer): | |
client = ClientSerializer() | |
master = MasterSerializer() | |
services = ServiceSerializer(many=True, read_only=True) | |
proposals = OrderProposalSerializer(many=True) | |
class Meta: | |
model = Order | |
exclude = ("is_removed", ) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from rest_framework.viewsets import ReadOnlyModelViewSet | |
from example.orders.models import Order | |
from example.orders.serializers import OrderSerializer | |
class OrderViewSet(ReadOnlyModelViewSet): | |
queryset = Order.objects.prefetch_related("proposals").all() | |
serializer_class = OrderSerializer |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment