Django:如何从另一个模型生成模型的数据?

时间:2016-06-24 05:00:31

标签: django django-models

我为书和作者创建了两个不同的模型,

class book(models.Model):
    title = models.CharField(max_length=200)
    author = models.CharField(max_length = 200)

class author(models.Model):
    name = models.CharField(max_length=200)
    GENDER = (
        ('M', 'Male'),
        ('F', 'Female')
    )
    gender = models.CharField(max_length=1, choices=GENDER)

是否可以不使用外键链接这两个模型,并自动从书籍信息(用户输入)生成作者? 提前谢谢!

1 个答案:

答案 0 :(得分:2)

您可以使用Django的signals

@receiver(post_save, sender=Book)
def make_author(sender, instance, created, **kwargs):
    if created:
        Author.objects.create(name=instance.author)

每次使用Author字段中的Book创建新的name时,都会创建新的Book.author

另一种方法是覆盖Book.objects.create()模型上的Book方法,并直接在Author模型中创建Book实例。优点是它允许您在创建(两个)对象时直接添加更多数据。缺点是它会使Book取决于Author的存在。