[英]Django default data (Fixtures?) in views.py on form.save()?
想知道每次使用form.save()
创建新帐户时,在Django中插入一些默认数据库数据的最佳方法是什么。
可以说,用户刚刚创建了一个新的业务资料帐户,我想在form.save()
之后预加载使用新的业务ID和今天的日期自定义的数据(因此我可以使用新的帐户ID)。
显然,我可以使用硬编码方法并编写10行Model.objects.create(...)
并完成此操作,但是我想知道通过以下方法实现此功能的“正确” Django / pythonic方法是什么? JSON夹具文件等
如果您只关心创建一个id,则可以有一个模型,其中包含允许为null的字段和auto id字段。 其他字段也可以具有默认值。 默认字段选项还允许回调。 例如:-
created_at = models.DateTimeField(default=datetime.now)
查看: https : //docs.djangoproject.com/zh-CN/1.9/topics/db/models/#field-options
具有所有可为空字段或默认值字段的Model本质上可以使用form.save()中的一行代码来创建。 假设您打算仅创建一个默认模型对象。
至于正确的方法,您可能希望在模型和正确的关系(FK)中使用简单的标志(将业务资料记录为活动状态,将默认的活动状态记录为非活动状态等),以使用户无法重复创建默认的业务资料。
您可以使用django post_save信号。 它易于使用。
https://docs.djangoproject.com/zh-CN/1.9/ref/signals/#django.db.models.signals.post_save
您可以将代码放在该应用程序本身的models.py中。
@receiver(post_save,sender=ModelName)
def do_some_operation(sender, **kwargs):
if kwargs['created']: # Executes only if created
obj = kwargs['instance']
# do modifications with your obj
obj.save()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.