Django - 更新数据库中具有此值

时间:2016-05-20 17:42:44

标签: python django database django-models updates

我们说我有两张桌子:

表#1:空格

enter image description here

表#2:学生

enter image description here

如果我想更改prom_name表单#1,我想自动更新表#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()

这只是我尝试做的一个简单示例,如果寄存器是新的那么原始的已经验证了

我无法从我的表中的每个prom_code = self.prom_code(我改变的那个)中改变我的所有prom_names学生

我是否需要使用for循环?

此致

2 个答案:

答案 0 :(得分:1)

您的设计不符合2nd normal formProm_name只应存在于表Space中,而不应存在于Students中,因为存储冗余字段只会增加额外的磁盘空间并增加维护工作,就像您刚才描述的那样。

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

答案 1 :(得分:1)

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

表#1:空格

Prom_code  |   Prom_name
789             Prom1
800             Prom5
471             Prom3

表#2:学生

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

学生表中的 Prom_code 是一个外键,指的是空间中的 Prom_code table。