Python Django-如何复制同一类中的字段

Python Django-如何复制同一类中的字段,python,django,django-models,Python,Django,Django Models,我将用“主题”和“学校课堂”来组织一些文本 最初,“学校/班级”名称将与“学科”名称相同 所以,当我创建一个文本时,我需要字段“subject”自动填充“school\u class”的字段信息。这是为了使它更容易,而不是错误的主题,因为我已经准备好了文本,将只是复制和粘贴它 就像只有在我创建文本时才会自动复制一样,,因为我将来会更改“school\u class”的名称 看看我的模特 我试试看: from django.db import models class Texts(models.

我将用“主题”和“学校课堂”来组织一些文本

最初,“学校/班级”名称将与“学科”名称相同

所以,当我创建一个文本时,我需要字段“subject”自动填充“school\u class”的字段信息。这是为了使它更容易,而不是错误的主题,因为我已经准备好了文本,将只是复制和粘贴它

就像只有在我创建文本时才会自动复制一样,,因为我将来会更改“school\u class”的名称

看看我的模特 我试试看:

from django.db import models

class Texts(models.Model):
   school_class = models.ForeignKey(School_class, on_delete=models.DO_NOTHING)
   subject = models.CharField(max_length=200, blank=True)
   body = models.CharField(max_length=200, null=True, blank=True)

   def subject(self):
        return self.school_class

   def __str__(self):
        return self.subject
问题是,当我更改“school_class”中的信息时,自动更改“subject”

为什么我需要这个

将来我会修改我所有文本的“school_class”名称,但我希望“subject”在创建时保持原样


如何做到这一点?

如果您想在管理视图和您自己的视图中都使用此功能,您应该使用信号,如:

型号.py

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

class Texts(models.Model):
   school_class = models.ForeignKey(School_class, on_delete=models.DO_NOTHING)
   subject = models.CharField(max_length=200, blank=True)
   body = models.CharField(max_length=200, null=True, blank=True)

   def statement(self):
        return self.collection

   def __str__(self):
        return self.subject


@receiver(pre_save, sender=Texts)
def texts_pre_save_receiver(sender, instance, **kwargs):
    if not instance.pk:
        instance.school_class = instance.subject

如何复制id字段?我只尝试将主题更改为id:instance.school\u class=instance.id。--不工作。如果需要
id
,则应首先在数据库中创建对象;因此,您不能使用
pre_save
(在将对象保存到数据库之前运行)。尝试改用
post\u save
信号。我尝试post\u save,但出现了此错误
'NoneType'对象没有属性“id”