【发布时间】:2017-02-04 06:39:25
【问题描述】:
django 的新手。我想做的是发布一个具有 OneToOneField 属性的模型。你是怎么发布的?
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 方法(基于 API)
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)
如果我尝试用这样的方式发布:
(some_url...)/characteristics/ other=4.4 another=4 post=1
我得到下一个错误:
django.db.utils.IntegrityError: (1048, "列 'post_id' 不能 空")
思路是接收模型Article的id,然后保存模型Characteristic。
有什么想法吗?
【问题讨论】:
-
不是 django 人 - 女服务员是我使用的......你不只需要一个包含特征实例 ID 的 POST 正文,键为“article”,浮点数与键“other”和一个带有“another”字段的int?
-
您需要在请求中提供 POST 数据,而不是 url。
-
我在另一篇文章中找到了这个,但是你必须给它另一个模型的数据,我的问题是只给出模型的 ID ARTICLE stackoverflow.com/questions/27365486/…
标签: python django django-rest-framework