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



我将创建一些文本,并按"主题"和"school_classes"进行组织。

最初,"school_class"名称将与"主题"名称相同。

因此,当我创建文本时,我需要用"school_class"的字段信息自动填充字段"主题"。这是为了使它更容易,而不是错误的主题,因为我已经准备好了文本,只会复制和粘贴它。

就像仅在我创建文本时自动复制一样,因为我将来会更改"school_class"名称。

看向我的 models.py 我试过:

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"中的信息时,"主题"中会自动更改。

为什么我需要这个?

将来,我将修改所有文本的"school_class"名称,但我希望"主题"在创建时保持原始状态。

怎么做?

如果你想在admin 和你自己的视图中同时拥有此功能,你应该使用信号,如:

models.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

相关内容

  • 没有找到相关文章

最新更新