【发布时间】:2016-11-30 21:14:53
【问题描述】:
我正在设计一个用于列出商店和创建商店的 API。我可以列出商店,但在设计创建商店时,尽管在商店序列化程序中调用了所有产品和商店类别序列化程序,但我没有得到产品和商店类别字段。
我的缩短模型看起来像
class Merchant(models.Model):
user = models.ForeignKey(User)
phone = models.PositiveIntegerField(null=True,blank=True)
class Store(models.Model):
merchant = models.ForeignKey(Merchant)
name_of_legal_entity = models.CharField(max_length=250)
class Product(models.Model):
store = models.ForeignKey(Store)
image = models.ForeignKey('ProductImage',blank=True,null=True)
name_of_product = models.CharField(max_length=120)
class ProductImage(models.Model):
image = models.ImageField(upload_to='products/images/')
class StoreCategory(models.Model):
product = models.ForeignKey(Product,null=True, on_delete=models.CASCADE,related_name="store_category")
store_category = models.CharField(choices=STORE_CATEGORIES, default='GROCERY', max_length=10)
Serializer.py
class ProductImageSerializer(ModelSerializer):
class Meta:
model = ProductImage
fields = ( 'id','imageName', )
class ProductSerializers(ModelSerializer):
image = ProductImageSerializer(many=False,read_only=True)
class Meta:
model = Product
fields=('id','image','name_of_product','description','price','active',)
class StoreCategorySerializer(ModelSerializer):
product = ProductSerializers(read_only=True)
class Meta:
model = StoreCategory
class StoreSerializer(ModelSerializer):
# url = HyperlinkedIdentityField(view_name='stores_detail_api')
store_categories = StoreCategorySerializer(many=True)
merchant = MerchantSerializer(read_only=True)
class Meta:
model = Store
fields=("id",
"merchant",
"store_categories",
"name_of_legal_entity",
"pan_number",
"registered_office_address",
"name_of_store",
)
Views.py
class StoreCreateAPIView(CreateAPIView):
queryset = Store.objects.all()
serializer_class = StoreSerializer
parser_classes = (FormParser,MultiPartParser,)
def put(self, request, filename, format=None):
print('first put works')
file_obj = request.data['file']
print ('file_obj',file_obj)
return Response(status=204)
def perform_create(self, serializer):
print('then perform works')
serializer.save(user=self.request.user)
这是它的外观截图
为什么表格中没有显示商家、产品和商店类别?
【问题讨论】:
-
如果您的商家ID是自动递增或自动生成的,那么它不存在是正常的。
-
我的商家模型看起来像这个类 Merchant(models.Model): user = models.ForeignKey(User) phone = models.PositiveIntegerField(null=True,blank=True)
-
@JustinM.Ucar 我已经用商家模型更新了我的问题。它不是自动递增的,它包含用户和用户地址、电话号码等。
-
从序列化器中移除
read_only=True -
删除后是否有效?
标签: python django api python-3.x django-rest-framework