简体   繁体   English

将ForeignKey映射到另一个类

[英]Mapping a ForeignKey with another class

This is my Django Models.py 这是我的Django Models.py

class Test1(models.Model):
    id = models.AutoField(db_column='Id', primary_key=True)  
    name = models.TextField(db_column='Name', blank=True, null=True)  

class Test2(models.Model):
    id = models.AutoField(db_column='Id', primary_key=True) 
    sequence = models.IntegerField(db_column='Sequence') 
    test1id = models.ForeignKey('Test1', models.DO_NOTHING,null=False, db_column='Test1Id')

what i am trying to do is to ensure when the Test1 id is saved, it automatically fills in the test1id. 我想要做的是确保保存Test1 id时,它会自动填写test1id。

Not sure what you want to do here, but if you want to implement any post save actions for model look at django signals . 不知道您要在这里做什么,但是如果您想为模型实施任何后保存操作,请查看django signal Particularly at post_save signal. 特别是在post_save信号处。

Here is example usage of post_save signal, for model Test1 (suppose you want to create new Test2 object): 这是模型Test1post_save信号用法示例(假设您要创建新的Test2对象):

from django.db.models.signals import post_save
from django.dispatch import receiver

@receiver(post_save, sender=Test1)
def create_test2(sender, instance, created, **kwargs):
    Test2.objects.create(test1id=instance)

You can redefine the save method: 您可以重新定义保存方法:

def save(self, **kwargs):
    if self.pk is None:
        super(Test1, self).save()
        Test2.objects.create(test1id=self)
    else:
        super(Test1, self).save()

So when you save Test1, a Test2 entry is created 因此,当您保存Test1时,将创建一个Test2条目

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM