【发布时间】:2018-07-16 04:18:34
【问题描述】:
我有以下用户和订单类:
class User(models.Model):
id = models.AutoField(db_column='id', primary_key=True)
username = models.CharField(max_length=240)
password = models.CharField(max_length=128)
last_login = models.DateTimeField(blank=True, null=True)
is_superuser = models.IntegerField()
订单表
class Order(models.Model):
orderid = models.AutoField(db_column='orderId', primary_key=True)
orderuserid = models.ForeignKey('User', models.DO_NOTHING, related_name='users', db_column='orderUserId')
orderamount = models.IntegerField(db_column='orderAmount', blank=True, null=True)
现在我的问题是我想从现有用户创建一个新订单,那么当用户创建订单时,如何自动填写 Order 表中的 orderuserid 字段。我很困惑序列化器现在将如何工作。
我的序列化程序类是
class OrderSerializer(serializers.ModelSerializer):
orderid = serializers.IntegerField
orderuserid = serializers.HiddenField(default=serializers.CurrentUserDefault())
orderamount = serializers.CharField
class Meta:
model = Orders
fields = ('orderid','orderuserid','orderamount')
def create(self, validated_data):
return Orders.objects.create(**validated_data)
和查看
class OrdersView(APIView):
def post(self, request):
serializer = OrderSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
并且错误是 /api/orders 处的 KeyError '请求'
【问题讨论】:
-
你的意思是当用户例如访问
/new/order时他不想输入他的用户名?
标签: python django django-models django-rest-framework foreign-keys