如何在Django中创建多对一字段?
我想在book-author-Publishing的基础上创建一个简单的Django项目 这本书有一位作者,但作者有多本书 第二,我想知道书和出版物之间的关系,比如出版物有多本书,但书只有一本出版物(如果书出版了),或者书没有出版物(如果书没有出版),我如何为它建立模型 在这种情况下,在何处使用外键?可以为多对一关系创建一个。由于您的如何在Django中创建多对一字段?,django,django-models,foreign-keys,Django,Django Models,Foreign Keys,我想在book-author-Publishing的基础上创建一个简单的Django项目 这本书有一位作者,但作者有多本书 第二,我想知道书和出版物之间的关系,比如出版物有多本书,但书只有一本出版物(如果书出版了),或者书没有出版物(如果书没有出版),我如何为它建立模型 在这种情况下,在何处使用外键?可以为多对一关系创建一个。由于您的书籍有一位作者,因此我们为书籍模型指定了一个外键: from django.db import models class Author(models.Model)
书籍
有一位作者,因此我们为书籍
模型指定了一个外键
:
from django.db import models
class Author(models.Model):
name = models.CharField(max_length=128)
# some other fields
# …
class Book(models.Model):
title = models.CharField(max_length=128)
author = models.ForeignKey(
Author,
on_delete=models.CASCADE,
related_name='books'
)
然后,您可以访问书籍的作者
,例如b1
,如下所示:
b1.author # will return a
对于出版物,您可以再次使用ForeignKey
,但是ForeignKey
可以是NULL
,我们通过指定参数来实现这一点,并进行设置,以便ModelForm
s和ModelAdmin
s不会将其视为必填字段:
class Book(models.Model):
title = models.CharField(max_length=128)
author = models.ForeignKey(
Author,
on_delete=models.CASCADE,
related_name='books'
)
publication = models.ForeignKey(
Publication,
on_delete=models.CASCADE,
related_name='books',
null=True,
blank=True
)
教材(models.Model):
title=models.CharField(最大长度=128)
author=models.ForeignKey(
作者
在_delete=models.CASCADE上,
相关_name='books'
)
publication=models.ForeignKey(
出版
在_delete=models.CASCADE上,
相关书籍,
空=真,
空白=真
)
现在我可以理解书的作者关系了。图书出版关系的解决方案是什么,其中关系基于条件???我不知何故忽略了这一点,在这种情况下,您可以使NULL
ableForeignKey
。
a.books.all() # a queryset containing b1 and b2
class Book(models.Model):
title = models.CharField(max_length=128)
author = models.ForeignKey(
Author,
on_delete=models.CASCADE,
related_name='books'
)
publication = models.ForeignKey(
Publication,
on_delete=models.CASCADE,
related_name='books',
null=True,
blank=True
)