0

In my serializers.py I have a OrderCreateSerializer:

class OrderCreateSerializer(ModelSerializer):

    data_params = serializers.DictField()  # 根据产品数据模型不同而异

    class Meta:
        model = Order
        fields = (
            "product_describe",  # 产品描述 (购买xx产品 + 参数)
            "billing_type", # 计费类型 ("包年包月")
            "data_params",  # 数据
        )
    def create(self, validated_data):

        request = self.context.get("request")
        if request and hasattr(request, "user"):
            user = request.user

        validated_data["order_num"] = generateOrderNum(userid=user.id)
        validated_data["order_status"] = "未支付"
        validated_data["order_status"] = "未支付"

        data_dic = validated_data.pop("data_params") #

        # data_dic["data"]["profile"]

        validated_data["buytime"] = data_dic["data"]["buytime"]
        validated_data["count"] = data_dic["data"]["count"]
        validated_data["paytype"] = ""   

        validated_data["cost"] = ""  
        validated_data["account"] = user.account   

        return Order.objects.save(**validated_data)  # this is the line 57

When I save the validated_data, it report the bellow error:

enter image description here

Manager object has no attribute 'save'

My Order model is like bellow, there is many fields in it :

class Order(models.Model):
    """
    订单
    """
    order_num = models.CharField(max_length=128, unique=True)  # 订单编号
    order_status = models.CharField(max_length=12)  # 订单状态  "未支付", "已支付,未完成", "已完成", "已经删除","其他"
    product_describe = models.TextField()  # 产品描述
    billing_type = models.CharField(max_length=16)  # 计费类型
    buytime = models.CharField(max_length=16)  # 比如:1月  永久
    count = models.IntegerField()  # 购买数量
    paytype = models.CharField(max_length=16)  # 支付方式(支付包,微信,xxx)
    cost = models.DecimalField(max_digits=8, decimal_places=2, default=0.00)  # 费用(需要花费多少钱)
    account = models.ForeignKey(to=Account) # 所属账户

    ctime = models.DateTimeField(auto_now_add=True)  # 创建时间
    uptime = models.DateTimeField(auto_now=True)  # 更新时间

    def __str__(self):
        return self.product_describe
    def __unicode__(self):
        return self.product_describe

I don't know why there is the Manager object here.

2 Answers 2

1

You're calling save on the manager (ie, objects)

return Order.objects.save(**validated_data)

You call save on models.

I assume you're trying to create the model, in which case you want create.

return Order.objects.create(**validated_data)
Sign up to request clarification or add additional context in comments.

Comments

0

Order.objects is an instance of the Manager class. The save method is a method of the model class.

Try:Order(**validated_data).save()

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.