0
私は私のserializer
でWritable Nested Serializerを使用して、このようなcreate
方法を使用している:私は、ネストされたデータを作成することができますジャンゴ休憩Framwork書き込み可能な入れ子シリアライズ
class OrderSerializer(serializers.ModelSerializer):
billing = BillingSerializer()
class Meta:
model = Order
fields = '__all__'
def create(self, validated_data):
billing_data = validated_data.pop('billing')
order = Order.objects.create(**validated_data)
Billing.objects.create(**billing_data)
return order
を。
{
"id": 1,
"billing": {},
"quantity": 3,
"delivery_date": "2017-01-27T15:44:40Z",
"base_rate": "90.00",
"is_delivered": false,
"created_at": "2017-01-26T07:26:53.194450Z",
"updated_at": "2017-01-26T07:26:53.194495Z",
"user_id": 1
}
請求のための空の辞書:私はビューを得るとき、それはこのように表示されます。次のように私のモデルは以下のとおりです。ここで
class Billing(models.Model):
paid_status = models.BooleanField(default=False)
total_billed = models.DecimalField(default=90.00, max_digits=6, decimal_places=2)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
class Meta:
ordering = ('created_at',)
verbose_name = 'Billing'
verbose_name_plural = 'Billings'
class Order(models.Model):
user_id = models.ForeignKey('auth.User', related_name='orders', on_delete=models.CASCADE)
quantity = models.PositiveIntegerField(validators=[MaxValueValidator(10)])
delivery_date = models.DateTimeField(default=datetime.now()+timedelta(days=1))
base_rate = models.DecimalField(default=90.00, max_digits=6, decimal_places=2)
is_delivered = models.BooleanField(default=False)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
billing = models.TextField()
class Meta:
ordering = ('created_at',)
verbose_name = 'Order'
verbose_name_plural = 'Orders'
def __str__(self):
return self.id
は私oderViewです:
class OrderViewSet(viewsets.ModelViewSet):
queryset = Order.objects.all()
serializer_class = OrderSerializer
permission_classes = (permissions.IsAuthenticated, permissions.IsAdminUser,)
は、どのように私は私の予想データを得ることができますか?
モデル定義でTextFieldとして 'billing'フィールドがあり、それをForeignKeyで再定義します。これは動作するはずです –
billing = models.ForeignKey( 'Billing')? – mimic
IntegrityError at/api/orders/ (1048、「 'billing_id'列はnullにはできません) – mimic