Pyt*_*bie 2 python database django
我有 2 个数据库模型:
class Book(models.Model):
title = models.CharField(max_length=150, null=False)
author = models.CharField(max_length=150, null=False)
date_pub = models.DateField(verbose_name="Date Published")
Run Code Online (Sandbox Code Playgroud)
和
class Customer(models.Model):
name = models.CharField(max_length=25, null=False)
surname = models.CharField(max_length=35, null=False)
age = models.IntegerField(null=False)
book = models.ForeignKey(to=Book, on_delete=models.CASCADE)
Run Code Online (Sandbox Code Playgroud)
我的应用程序是最近创建的,所以我用来manage.py shell向这些模型插入数据。
例如,假设我创建了带有标题"Kolobok"和"Zolotaya Ribka". 接下来,我创建了 customer "Vasya"。当我创建 customer 时"Vasya",我将字段指向book“Kolobok”。但随着时间的推移,我想将 book 附加"Zolotaya Ribka"到"Vasya"'s books 。
我怎么能这样?
你可能需要一个ManyToManyField[Django-doc]来代替。多对多字段意味着 aCustomer可以链接到零、一个或多个Books(因此这里意味着客户购买了零、一本或多本书),并且 aBook可以链接到零、一个或多个客户(所以一本书被零个、一个或多个客户购买)。
因此,我们可以通过引入一个字段来重塑它books:
class Customer(models.Model):
name = models.CharField(max_length=25, null=False)
surname = models.CharField(max_length=35, null=False)
age = models.IntegerField(null=False)
books = models.ManyToManyField(Book)Run Code Online (Sandbox Code Playgroud)
然后我们可以像您一样构建书籍和客户:
b1 = Book.objects.create(title='Kolobok', author='')
b2 = Book.objects.create(title='Zolotaya Ribka', author='')Run Code Online (Sandbox Code Playgroud)
接下来我们可以创建一个客户:
c1 = Customer.objects.create(name='Vasya', surname='', age=73)Run Code Online (Sandbox Code Playgroud)
然后我们就可以把两者联系起来的书b1,并b2到c1:
c1.books.add(b1, b2)Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1336 次 |
| 最近记录: |