【问题标题】:Need to store more vehicles per single user_id in django api需要在 django api 中为每个 user_id 存储更多车辆
【发布时间】:2018-01-25 05:41:08
【问题描述】:

我使用 abstract user 自定义了内置用户模型。我制作了另一种与用户模型具有一对一关系的模型车辆,它类似于每个用户的车辆。但它为每个 user_id 存储一辆车。我需要它来为每个用户存储多辆汽车。我的代码如下 -

模型.py

class User(AbstractUser):
  phone_number = models.IntegerField(null=True)
  otp = models.IntegerField(null=True)


class Vehicle(models.Model):
  user = models.OneToOneField(User)
  maker = models.CharField(max_length=500, blank=True)
  car_model = models.CharField(max_length=30, blank=True)

序列化器.py

class VehicleSerializer(serializers.ModelSerializer):
user_id = serializers.IntegerField()
class Meta:
    model = Vehicle
    fields = ('maker', 'car_model', 'user_id')                                                                      

def create(self, validated_data):
    maker = validated_data.pop('make', None)
    car_model = validated_data.get('car_model', None)
    user_id = validated_data.get('user_id', None)
    instance = self.Meta.model(**validated_data)

    if user_id is not None:
        instance.user_id = user_id
        instance.save()
    if car_model is not None:
        instance.car_model = car_model
        instance.save()
    return instance

Views.py

@api_view(['POST'])
def vehicle_add(request):
car_model = request.data.get('car_model')
user_id = request.user.id
serializer = VehicleSerializer(data={'user_id': user_id, 'car_model': car_model})
if serializer.is_valid():
    serializer.save()
    message = "i suceeded"
    return Response(message, status=status.HTTP_201_CREATED)
else:
    return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

我只需要知道如何在单个 user_id 下存储多辆车。谢谢

【问题讨论】:

    标签: python django api django-rest-framework models


    【解决方案1】:

    django one-to-one 关系就像听起来一样,它是一个模型到一个模型的关系。您正在寻找的关系是many-to-one。在此处查看文档:

    https://docs.djangoproject.com/en/1.11/topics/db/examples/many_to_one/

    如果您还有任何问题,请告诉我!

    【讨论】:

      猜你喜欢
      • 2023-02-26
      • 1970-01-01
      • 1970-01-01
      • 2012-10-29
      • 1970-01-01
      • 2020-07-30
      • 2021-09-06
      • 2016-09-19
      相关资源
      最近更新 更多