我们说我有两张桌子:
表#1:空格
表#2:学生
如果我想更改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循环?
此致
答案 0 :(得分:1)
您的设计不符合2nd normal form。 Prom_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。