Size: a a a

Django [ru] #STAY HOME

2020 April 25

in Django [ru] #STAY HOME
Михаил Павлов
OrderCreateView и OrderSerializer
помимо существующих?
источник

МП

Михаил Павлов in Django [ru] #STAY HOME
Если вы продаете только книги то в order можно сделать поле m2m на Book. Если что-то еще то стоит рассмотреть прокси модель OrderItem
источник

МП

Михаил Павлов in Django [ru] #STAY HOME
Книги электронные, в бумаге или и те и те?
источник

in Django [ru] #STAY HOME
Михаил Павлов
Если вы продаете только книги то в order можно сделать поле m2m на Book. Если что-то еще то стоит рассмотреть прокси модель OrderItem
у меня есть through модель между Order и Book, которая хранит и количество каждой из книг в заказе
источник

T

Tim in Django [ru] #STAY HOME
да просто раздели сериалайзеры и все))
источник

МП

Михаил Павлов in Django [ru] #STAY HOME
Я бы рекомендовал сделать точку для создания этой through модели
источник

T

Tim in Django [ru] #STAY HOME
serializer_action_class = {
   'retrieve': OrderDetailSerializer,
   'create': OrderCreateSerializer,
}

def get_serializer_class(self):
   try:
       return self.serializer_action_class[self.action]
   except (KeyError, AttributeError):
       return super().get_serializer_class()
источник

A

Andrey in Django [ru] #STAY HOME
Tim
serializer_action_class = {
   'retrieve': OrderDetailSerializer,
   'create': OrderCreateSerializer,
}

def get_serializer_class(self):
   try:
       return self.serializer_action_class[self.action]
   except (KeyError, AttributeError):
       return super().get_serializer_class()
фу
источник

T

Tim in Django [ru] #STAY HOME
?
источник

МП

Михаил Павлов in Django [ru] #STAY HOME
class BookOrderDetail(models.Model):
 book = models.FK(Book)
 order = models.FK(Order)
 number = models.PosSmallInt()
 discount = models.FK(Discount)



class BookOrderDetailSerializer(ModelSerializer):
 class Meta:
   model = BookOrderDetail
   exclude = ()



class BookOrderDetailViewSet(ModelViewSet):
 serializer = BookOrderDetailSerializer
 
 class Meta:
   model = BookOrderDetail
источник

МП

Михаил Павлов in Django [ru] #STAY HOME
Все просто
источник

in Django [ru] #STAY HOME
Михаил Павлов
Все просто
всё то просто, как это связать всё? у меня есть json такого типа:
{
"profile": 1,
"order_book": [{"book": 1, "amount": 1}, {"book": 2, "amount": 2}],
"address": "Adress"
}
Я его отправлял на 1 ModelViewSet, в котором сериалайзер был OrderSerializer со скрина выше. Как мне юзать BookOrderDetailViewSet?
источник

МП

Михаил Павлов in Django [ru] #STAY HOME
Как любой другой ViewSet
источник

МП

Михаил Павлов in Django [ru] #STAY HOME
У вас в промежуточной модели какие поля?
источник

in Django [ru] #STAY HOME
Михаил Павлов
У вас в промежуточной модели какие поля?
https://dpaste.org/5fR0#L7 - модели
https://dpaste.org/Pfsw - нанешние сериалайзеры
источник

МП

Михаил Павлов in Django [ru] #STAY HOME
Ну вот у вас уже есть OrderBook
источник

МП

Михаил Павлов in Django [ru] #STAY HOME
Его сразу непосредственно и создвайте
источник

МП

Михаил Павлов in Django [ru] #STAY HOME
При добавлении в заказ
источник

МП

Михаил Павлов in Django [ru] #STAY HOME
Так понятней?
class OrderBook(models.Model):
 book = models.FK(Book)
 order = models.FK(Order)
 amount = models.PosSmallInt()



class OrderBookSerializer(ModelSerializer):
 class Meta:
   model = OrderBook
   exclude = ()



class BookOrderDetailViewSet(ModelViewSet):
 serializer_class = OrderBookSerializer
 
 class Meta:
   model = OrderBook
источник

МП

Михаил Павлов in Django [ru] #STAY HOME
Подключаете вьюсет к урл и пользуетесь
источник