POST相关字段Django rest框架 [英] POST related Fields Django rest Framework
问题描述
Models.py
code>文章(models.Model):
name = models.CharField(max_length = 50)
description = models.TextField(max_length = 200)
特征model.Model):
article = models.OneToOneField(Article,on_delete = models.CASCADE,primary_key = True)
other = models.FloatField()
another = models.IntegerField()
Serializer.py
pre>
class ArticleSerializer(serializers.ModelSerializer):
class Meta:
model = article
field ='__ all__'
class CharacteristicSerializer serializer.ModelSerializer):
article = serializers.StringRelatedField()
class Meta:
model = Characteristic
field ='__ all__'
Views.py POST方法(基于API)
def post(self,request,format = None):
serializer = CharacteristicSerializer(data = request.data)
如果serializer.is_valid():
serializer.save()
返回响应(serializer.data,status = status.HTTP_201_CREATED)
返回响应(serializer.errors,status = status.HTTP_400_BAD_REQUEST)
如果我尝试POST这样的东西:
(some_url ...)/ features / other = 4.4 another = 4 post = 1
我收到下一个错误:
django.db。 utils.IntegrityError:(1048,Columnpost_id不能为
null)
想法是接收id的模型文章,然后保存模型特征。
任何想法?
最后我能够解决。只有关于字典。
方法POST
def post(self,request,format = None):
serializer = CharacteristicsSerializer(data = request.data)
如果serializer.is_valid():
tmp = self.get_article (pk = int(self.request.data ['article']))
serializer.save(article = tmp)
返回响应(serializer.data,status = status.HTTP_201_CREATED)
返回响应(serializer.errors,status = status.HTTP_400_BAD_REQUEST)
现在正在工作,如果有是另一个更好的方式来做,有人想分享它我会感激
new at django. What I am trying to do is POSTING a model which has a OneToOneField property. How do you POST that?
Models.py
Article(models.Model):
name=models.CharField(max_length=50)
description=models.TextField(max_length=200)
Characteristic(models.Model):
article=models.OneToOneField(Article,on_delete=models.CASCADE,primary_key=True)
other=models.FloatField()
another=models.IntegerField()
Serializer.py
class ArticleSerializer(serializers.ModelSerializer):
class Meta:
model=Article
field='__all__'
class CharacteristicSerializer(serializers.ModelSerializer):
article=serializers.StringRelatedField()
class Meta:
model=Characteristic
field='__all__'
Views.py POST METHOD (API Based)
def post(self, request,format=None):
serializer=CharacteristicSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data,status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
If I try to POST with something like this:
(some_url...)/characteristics/ other=4.4 another=4 post=1
I get the next error:
django.db.utils.IntegrityError: (1048, "Column 'post_id' cannot be null")
The idea is to receive the id of the model Article and then save the model Characteristic.
Any ideas?
Finally I was able to solve it. It is only about dictionaries.
Method POST
def post(self,request,format=None):
serializer=CharacteristicsSerializer(data=request.data)
if serializer.is_valid():
tmp=self.get_article(pk=int(self.request.data['article']))
serializer.save(article=tmp)
return Response(serializer.data,status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
For now that is working, if there is another better way to do it and someone want to share it I'll be thankful
这篇关于POST相关字段Django rest框架的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!