现在有一个model
class Order(Model):
order_no = CharField(max_length=10)
name = CharField(max_length=100)
现在要在创建订单的时候,自动生成order_no的内容
就是希望这样
order = Order.objects.create(name='xxx')
然后自动生成order_no的内容
order_no = datetime.datetime.now.strftime('%Y%m%d' + seq)
这个create的行为怎么定制呢?没找到源码。还是应该改save()方法?
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
模型不要动,你要迟早要复用,可以在模型下写个方法,调用就行,反正你调用方法前一定要调用模型,那不如把方法写到模型里面去。不过这是小规模的做法,大规模后重构成多个文件就可以了。
两种方法,分别对应用 create 和 save:
1、create
改写相应 model 的 manager:
2、复写 save:
我覺得不用動 Model 耶...,在 create data 的時候設置就好了阿?
in
views.py
:其實這樣也是自動阿!
我回答過的問題: Python-QA
在django中每个模型都有个manager用于管理表级别的操作,例如order.objects中的objects就是默认的manager,你可以继承django的models.Manager来写各种方法,包括在创建数据时保存时间信息,具体可以看django book里添加额外的manager的方法
改save方法,