python - 将值附加到 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")
和
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"
. 接下来,我创建了客户"Vasya"
。当我创建客户"Vasya"
时,我将字段book
指定为“Kolobok”。但随着时间的推移,我想将书附加"Zolotaya Ribka"
到"Vasya"
书上。
我怎么能做到这一点?
解决方案
您可能需要一个ManyToManyField
[Django-doc]代替。多对多字段意味着 aCustomer
可以链接到零个、一个或多个Book
s(所以这里意味着客户购买了零个、一本或多本书),并且 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)
然后我们可以像你一样构建书籍和客户:
b1 = Book.objects.create(title='Kolobok', author='')
b2 = Book.objects.create(title='Zolotaya Ribka', author='')
接下来我们可以创建一个客户:
c1 = Customer.objects.create(name='Vasya', surname='', age=73)
然后我们可以将这两本书链接b1
到:b2
c1
c1.books.add(b1, b2)
推荐阅读
- git - Microsoft Visual SourceSafe 和 GIT 可以一起工作吗?
- html - 如何调整布尔玛表格列的宽度
- python - 使用 PySpark 计算出现次数
- firebase - 如何检查firestore安全规则列表请求中是否存在文档?
- python - 加载 .kv 文件有困难
- python - 如何连续运行我的python程序
- python - Pandas 删除空格或缩进
- matrix - 线性变换矩阵
- typescript - Koa Typescript 应用程序挂起任何 Firebase 数据库调用
- c - 返回两次的 C 函数。(甚至与 fork() 几乎不相似)