【问题标题】:Auto model creation through relationship Django通过关系 Django 创建自动模型
【发布时间】:2020-06-08 17:46:56
【问题描述】:

我有一个模型

class Incarico(models.Model):
    polizza = models.OneToOneField(Polizza, default=None, blank=True, on_delete=models.CASCADE, null=True)

这里有这个模型

class Polizza(models.Model):
    partite = models.CharField(max_length=50, default=None, blank=True, null=True) 

我需要首先通过一些用户编译的表单来创建Incarico模型,在创建Incarico的那一刻,需要创建Polizza并与相同的id链接。 我怎么能做到这一点? 任何帮助表示赞赏!!!

【问题讨论】:

  • 为什么需要Polizza 以相同的id 创建? Incarico 中的 polizza 字段不是主键,尝试强制它具有相同的 id 可能不是一个好主意,因为这可能比人们想象的要困难得多。

标签: python django model


【解决方案1】:

当 Incarico 一起创建时,您可以使用信号来创建 Polizza:

from django.dispatch import receiver
from django.db.models.signals import post_save

@receiver(post_save, sender=Incarico)
def create_polizza(sender, instance, created, **kwargs):
    if created:
        p = Polizza.objects.create()
        instance.polizza = p
        instance.save()

【讨论】:

  • 谢谢!我应该如何实施这个?我的意思是,我应该把这个放在哪里?我应该什么时候调用它?
  • models.py 可以工作,但您也可以创建一个 signals.py 文件。哪个最适合你
猜你喜欢
  • 1970-01-01
  • 2014-08-27
  • 1970-01-01
  • 2020-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-22
相关资源
最近更新 更多