У меня есть 3 таблицы в последовательности с внешними ключами, как это
1-я таблица
class Orders(models.Model):
restaurant = models.ForeignKey(Restaurant, on_delete=models.CASCADE, blank=True, null=True)
order_number = models.AutoField(primary_key=True)
total_amount = models.DecimalField(max_digits=10, decimal_places=2)
2-я таблица, в которой будет вестись запись статейна продажу
class OrderArticle(models.Model):
order = models.ForeignKey(Orders, on_delete=models.CASCADE)
article = models.ForeignKey(Articles, on_delete=models.CASCADE)
article_quantity=models.IntegerField(default=0)
prize=models.DecimalField(max_digits=10, decimal_places=2)
3-я таблица - это опция Статей, которую можно добавлять к статьям, каждая статья имеет свои опции
class OrderArticleOptions(models.Model):
article_option = models.ForeignKey(ArticlesOptions, on_delete=models.CASCADE)
order_article = models.ForeignKey(OrderArticle, on_delete=models.CASCADE)
article_option_quantity = models.IntegerField(default=0)
price = models.DecimalField(max_digits=10, decimal_places=2)
Теперь я хочучтобы добавить данные в это с помощью Django rest Framework. Я добавляю данные в Таблица заказов вот так
Serilizer.py is
class OrderSerializer(serializers.ModelSerializer):
restaurant=RestaurantSerializer(required=False)
article=ArticlesSerializer(read_only=True, source='orderarticle_set' , many=True)
total_amount=serializers.DecimalField(required=False,max_digits=5, decimal_places=2)
tableid=serializers.IntegerField(required=False)
class Meta:
model = Orders
fields = [ 'order_number' , 'tableid' , 'total_amount' , 'ordertime' , 'order_status' ,'restaurant', 'article' ,]
def create(self, validated_data):
tableid = validated_data.get('tableid')
total_amount = validated_data.get('total_amount')
order_status = validated_data.get('order_status')
restaurant = validated_data.get('restaurant')
order_obj = Orders.objects.create(tableid=tableid,
total_amount=total_amount,order_status=order_status,
restaurant=restaurant
)
return order_obj
И мой view.py - это
class CreateOrderApi(APIView):
def post(self, request,restid):
serializer = OrderSerializer( data=request.data)
if serializer.is_valid():
obj_order = serializer.save(restaurant=Restaurant.objects.get(id=restid))
Итак, теперь я хочу добавить данные во все три таблицы, соотношение в одном порядке: у меня может быть несколько статей, а в одной статье - несколько вариантов. ,Что будет лучшим решением для этого, чтобы хранить все данные в 1 почтовый звонок?