Dan*_*leC 1 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)
Run Code Online (Sandbox Code Playgroud)
是否可以不使用外键来链接两个模型,并根据图书信息(用户输入)自动生成作者?提前致谢!
您可以使用 Django 的信号。
@receiver(post_save, sender=Book)
def make_author(sender, instance, created, **kwargs):
if created:
Author.objects.create(name=instance.author)
Run Code Online (Sandbox Code Playgroud)
Author每次创建新文件时Book,都会使用namefromBook.author字段创建一个新文件。
另一种方法是覆盖模型Book.objects.create()上的方法Book,并直接Author从Book模型内部创建实例。优点是它允许您在创建(两个)对象时直接添加更多数据。缺点是它会Book依赖于 的存在Author。