python - Django:模型上的多对多字段
问题描述
我有这些模型:
class Unit(AppModel):
name = models.CharField(max_length=255)
def __str__(self):
return self.name
class Item(AppModel):
title = models.CharField(max_length=255)
units = models.ManyToManyField("Unit", symmetrical=False, related_name="items")
def __str__(self):
return self.title + self.units
class Invoice(AppModel):
items = models.ManyToManyField("Item", symmetrical=False, related_name="invoices")
def __str__(self):
return "invoice_" + self.id
如您所见,我们有一个Item
with multipleunits
和一个Invoice
with multiple items
。
但是,我希望每个item
人Invoice
都unit
只有一个。如何做到这一点?
即,some_item.units
应该返回其所有类型的单位。然而,for item in some_invoice.items: return item.units
应该返回一个单元。
有没有其他方法来实现它?新的数据库设计??那么如何?帮助..
注意:我无法框出这篇文章的标题。随意这样做。谢谢。
解决方案
您需要在 Item 模型上使用 ForeignKey,而不是 ManyToManyField。这样一个项目将只有一个单元,但一个单元将被允许有多个项目。
推荐阅读
- javascript - 更新部署
- c++ - 为什么在即时窗口中执行 iterator->end() 会导致读取访问冲突,即使迭代器在范围内 - 对于 C++ vector::iterator?
- ios - 如何让 Expo 提示我的应用获得“始终”位置权限?
- angular - ng build --prod 没有反映 Angular 8 的新变化
- c# - 现代 Angular 应用程序如何使用不同的基于传统的服务
- c++ - Mac Snow Leopard 上的 Qt 5.3.2:ld:未找到架构 x86_64 [clang、objective-c 和 c++] 的符号
- c# - C#:如何通过 SocketAsyncEventArgs 发送非托管内存?
- mysql - 在 MYSQL 中将文本转换为 tinyint
- flutter - 如何在单个应用中添加多个动态主题
- python - 机器学习和 SVM