我在 Django 中創建了兩個模型。我正在嘗試使用 axios API 呼叫從反應前端發送發布請求。
我的反應作業正常,我可以使用類別 ID 發布請求,但不能使用類別名稱(硬編碼或來自下拉串列)
我嘗試使用 Postman,我得到了相同的結果。
class Category(models.Model):
name = models.CharField(max_length=50)
slug = models.SlugField(unique=True, null=True, blank=True)
def save(self,*args, **kwargs):
self.slug = slugify(self.name)
super(Category, self).save(*args, **kwargs)
def __str__(self):
return self.name
class Product(models.Model):
upc = models.CharField(max_length=30)
name = models.CharField(max_length=100)
description = models.TextField(max_length=255)
category = models.ForeignKey(Category, on_delete=models.CASCADE, null=True)
quantity = models.IntegerField()
price = models.IntegerField()
def __str__(self):
return self.name
視圖.py
from .models import Product
from .serializers import ProductSerializers
from rest_framework import generics
class ProductList(generics.ListCreateAPIView):
serializer_class = ProductSerializers
def get_queryset(self):
queryset = Product.objects.all()
return queryset
class ProductDetail(generics.RetrieveUpdateDestroyAPIView):
serializer_class = ProductSerializers
queryset = Product.objects.all()
序列化程式.py
from .models import Product, Category
from rest_framework import serializers
class CategorySerializers(serializers.ModelSerializer):
class Meta:
model = Category
fields="__all__"
class ProductSerializers(serializers.ModelSerializer):
category_name = serializers.SerializerMethodField('get_category_name')
def get_category_name(self, obj):
if obj.category_id:
return obj.category.name
class Meta:
model = Product
fields = '__all__'
我正在從 react axios 發送發布請求。
axios.post(productListURL, data)
如何發送帶有類別名稱的帖子請求:
name:"Coca Cola" ,
category:"Beverage"
代替
name: "Coca Cola",
category: 1
uj5u.com熱心網友回復:
將此用作產品序列化程式
class ProductSerializers(serializers.ModelSerializer):
category = serializers.SlugRelatedField(
queryset=Category.objects.all(), slug_field="name"
)
class Meta:
model = Product
fields =['upc','name','description','category,'quantity','price']
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/515233.html
標籤:Python反应django休息django-rest-framework
