Python Django关系

Python Django关系,python,django,django-models,orm,Python,Django,Django Models,Orm,在Django中对这样的东西进行建模的最佳方式是什么 (一) 这导致了一对夫妻和一对夫妻的关系 (二) 这导致了一种“一对一”、“多对一”、“一对一”的关系(与非从属的“多对一”关系) (三) 这是我最想要的,但是有没有更好的办法 欧元编辑:作者->书籍应为1;*,不是0;*但与这个问题无关 更新: 这对我很有用: class Book(models.Model): name = models.CharField(max_length=100) class Author(mod

在Django中对这样的东西进行建模的最佳方式是什么


(一)

这导致了一对夫妻和一对夫妻的关系

(二)

这导致了一种“一对一”、“多对一”、“一对一”的关系(与非从属的“多对一”关系)

(三)

这是我最想要的,但是有没有更好的办法

欧元编辑:作者->书籍应为1;*,不是0;*但与这个问题无关


更新:

这对我很有用:

class Book(models.Model):
    name = models.CharField(max_length=100)


class Author(models.Model):
    name = models.CharField(max_length=100)
    books = models.ManyToManyField(Book, through="AuthorBook")


class AuthorBook(models.Model):
    book = models.OneToOneField(Book)
    author = models.ForeignKey(Author)
谢谢@giaco

你应该在作者和书之间有一个对话:

class Author(models.Model):
    name = models.CharField(max_length=100)

class Book(models.Model):
    name = models.CharField(max_length=100)
    author = models.ManyToManyField(Person, through='AuthorBook')

class AuthorBook(models.Model):
    author = models.ForeignKey(Author, on_delete=models.CASCADE)
    book = models.ForeignKey(Book, on_delete=models.CASCADE)

书和作者是多人关系,而书可以有多个作者,作者可以写多本书。因此,您需要表AuthorBook,其中包含Book和Author id的记录

完全取决于您的应用程序要求您的图表不清楚。第一种选择是使这种关系现代化的正确方法。你为什么要额外的一对一呢?换句话说:一本书取决于一个作者(一对一)一个作者有一对n本书(一对一)第一种解决方案从作者端创建一个一对多关系,从图书侧簿创建一个多对多关系,而图书可以有多个作者,而作者可以写多本书。因此,您需要表AuthorBook,其中包含带有Book和Author id的记录。你很好,谢谢,这真的很接近我需要的,但是@giaco要快一点:)
class Book(models.Model):
    name = models.CharField(max_length=100)
    author = models.OneToOneField("Author", related_name="+")


class Author(models.Model):
    name = models.CharField(max_length=100)
    book = models.ForeignKey(Book, related_name="+")
class Book(models.Model):
    name = models.CharField(max_length=100)


class Author(models.Model):
    name = models.CharField(max_length=100)
    books = models.ManyToManyField(Book, through="AuthorBook")


class AuthorBook(models.Model):
    book = models.OneToOneField(Book)
    author = models.ForeignKey(Author)
class Author(models.Model):
    name = models.CharField(max_length=100)

class Book(models.Model):
    name = models.CharField(max_length=100)
    author = models.ManyToManyField(Person, through='AuthorBook')

class AuthorBook(models.Model):
    author = models.ForeignKey(Author, on_delete=models.CASCADE)
    book = models.ForeignKey(Book, on_delete=models.CASCADE)