django - 如何使用 Django 为现有表创建一对一字段?
问题描述
我们已经有一个模型,比方说,Product
. 我们想将其扩展为“一对一关系”,比方说ProductDetails
。如何以这种方式自动创建Product
模型行的每个现有行ProductDetails
?带有一些默认值。
Django 提供这样的工具吗?这项任务对我来说似乎很正常,但我找不到任何本机解决方案。
解决方案
这是您问题的答案:https ://stackoverflow.com/a/63323183/10602634
django 信号可用于在对象更改时创建、更新或删除。
在你的情况下:
from django.dispatch.dispatcher import receiver
class ProductDetails(models.Model):
product = models.OneToOneField(Product, on_delete= models.CASCADE)
'''rest'''
使用接收器包装函数
@receiver(post_save, sender=Product)
def add_details(sender, instance, created, **kwargs):
if created:
ProductDetails.objects.create(product=instance)
return ProductDetails
接收器上的 django 文档涵盖主题https://docs.djangoproject.com/en/3.2/topics/signals/#receiver-functions
推荐阅读
- apache-kafka - “errors.deadletterqueue.topic.name”在 Confluent 5.0.1 中无效
- python - 如何通过换行来移动整个 numpy 数组
- python - 理解RNN的softmax输出层
- javascript - 由于单引号和双引号,在 JSP 中形成 URL 面临问题
- mysql - 如何使用 VB.NET 编辑 MySQL 表中的一个单元格
- android - MPAndroidChart 是否支持保存或导出为 png 选项?
- javascript - Nodejs 为什么 await 只限于异步函数?
- angular - Sharepoint Online web api在使用角度登录后返回401
- html - 将一条长线换成一个
使线条等长
- java - 带有 SQL Server 的 Spring Data JPA 给出错误:无效的对象名称'Table_Name'