2016-07-27 56 views
1

我正在设计一个用于列出商店和创建商店的API。我可以列出商店,但在设计创建商店时,我并没有在Store Serializer中调用所有产品和商店类别序列化程序,但我没有获得产品和商店类别字段。为什么我的CreateAPIView不显示产品和商店类别字段?

我的短款看起来像

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) 

这里是它的外观

enter image description here

为什么它没有显示在表格商家,产品及店铺分类的截图?

+0

如果您的商家ID是自动增量或自动生成,那么它是不正常的。 –

+0

我的商家模式看起来像这类商人(models.Model): \t用户= models.ForeignKey(用户) \t手机= models.PositiveIntegerField(空=真,空=真) – milan

+0

@ JustinM.Ucar我已经更新了我问题与商人模式。它不是自动递增,它包含用户和用户地址,电话号码等。 – milan

回答

2

从您要创建条目的序列化器中删除read_only=True。 像:

product = ProductSerializers(read_only=True) 

应该

product = ProductSerializers() 

read_only会阻止它写因此我不会是结局。

相关问题