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