Django - 更新数据库中具有此值的每个字段

Django - Update each field in the database that have this value

假设我有两个 tables:

table#1: Space

table#2:学生

如果我想更改 prom_name 形式 table#1,我也想自动更新 table#2 中的 prom_name

我的学生模型是一个表格,学生在其中插入他们的名字和 prom_code(给定),如果 prom_code 不存在则拒绝注册

class Space(model.Models):
    prom_name = models.CharField(max_length = 20)
    prom_code = models.CharField(max_length = 20, Default=RANDOM, editable=FALSE)

    def save(self):
        try:
            From my_other_app.models import Students
            myobj = Students.object.get(prom_code = self.prom_code)
            myobj.prom_name = self.prom_name
            myobj.save()
        except Students.DoesNotExist:
        super(Space, self).save()

这只是我正在尝试做的一个简单示例,原始示例已经验证寄存器是否是新的,因此

我只是不知道如何从我的 table 中的每个 prom_code = self.prom_code(我正在更改的那个)更改我所有的 prom_name学生

我需要使用 for 循环吗?

此致,

您的设计不符合2nd normal formProm_name应该只存在于table Space中,不存在于Students中,因为存储冗余字段只会增加额外的磁盘space,增加维护工作。你刚刚描述的。

您应该从 Students table 中删除 Prom_name 列,并在需要使用 Space table 获取名称时进行连接。

您可以通过以下方式规范化您的数据库(通过更改模型):

table#1: Space

Prom_code  |   Prom_name
789             Prom1
800             Prom5
471             Prom3

table#2:学生

Name    |   ID    |    Prom_code
John         1           789
Martha       2           789   
Ramsy        3           800
Bob          4           471
Debbys       5           789

Prom_codeStudentstable是一个外键参考Prom_codeSpacetable.