我有两个DB型号:
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")
和
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)
我的应用程序是最近创建的,因此我使用
manage.py shell
向这些模型插入数据。例如,假设我创建了标题为
"Kolobok"
和"Zolotaya Ribka"
的书籍。接下来,我创建了customer"Vasya"
。当我创建customer"Vasya"
时,我将fieldbook
指向“kolobok”。但随着时间的推移,我想把book"Zolotaya Ribka"
附加到"Vasya"
的书籍中。我怎么能做到?
最佳答案
你可能需要一个ManyToManyField
[Django-doc]代替。多对多字段意味着aCustomer
可以链接到0,一个或多个Book
s(这里这意味着客户购买了0,一本或多本书),aBook
可以链接到0,一个或多个客户(因此一本书是由0,一个或多个客户购买的)。
因此,我们可以通过引入一个字段来重新建模:
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)
然后我们可以像您一样构建书籍和客户示例:
b1 = Book.objects.create(title='Kolobok', author='')
b2 = Book.objects.create(title='Zolotaya Ribka', author='')
接下来我们可以创建一个客户:
c1 = Customer.objects.create(name='Vasya', surname='', age=73)
然后我们可以把这两本书连接起来:
c1.books.add(b1, b2)
有关更多信息,请参见documentation on many-to-many relationships。
关于python - 将值附加到Django模型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57833741/