python - Django在多对多中获取外键值
问题描述
对于 Django 来说相对较新,所以这可能很简单,只是缺少了一些东西。鉴于这些模型:
class Manager(models.Model):
mgrname = models.CharField(max_length=100)
class Salesperson(model.Model):
name = models.CharField(max_length=100)
mgr_name = models.ForeignKey(SalesMgr,on_delete=models.CASCADE)
class SalesList(models.Model):
list_description = modesl.CharField(max_length=100)
list_members = models.ManyToManyFiels('Salesperson')
每个销售人员都被分配了一个经理(只有一个 - 经理有很多销售人员)。我的用户可以创建一个任意联系人列表(“SalesList”),其中包含任意数量的销售人员(销售人员可以属于许多列表。一个列表可能包含许多销售人员)。
我可以检索选定列表中的销售人员列表,但我需要包含销售经理的姓名。
选择列表后如何检索经理姓名?
谢谢!
解决方案
您需要创建一个额外的模型并在 ManytoManyField 中使用“through=new_model”。
class Manager(models.Model):
mgrname = models.CharField(max_length=100)
class Salesperson(model.Model):
name = models.CharField(max_length=100)
mgr_name = models.ForeignKey(SalesMgr,on_delete=models.CASCADE)
class SalesList(models.Model):
list_description = modesl.CharField(max_length=100)
list_members = models.ManyToManyField('Salesperson', through='Manager')
https://docs.djangoproject.com/en/3.0/topics/db/models/#extra-fields-on-many-to-many-relationships
推荐阅读
- html - 如何用 ARIA 属性标记 *ngIf 块?
- themes - Notepad++ 等宽字体无法正常工作/不是真正的等宽字体 - 解决方案
- excel - 按日期从一个工作表复制粘贴到另一个工作表
- atom-editor - Atom 中的语法突出显示突然无法正常工作
- python - 使用自定义 Tensorflow 2 模型的 FailedPreconditionError。找不到变量
- mysql - 如何从 MySQL 中的多个表中获取以下结果
- java - 如果String的输入是空格或回车(什么都没有),如何调用构造函数
- java - Android 中 BuildConfig.FLAVOR 上的 switch case 警告
- sql - 如何从 SQL 查询中保存 XML 文件?
- spring-security - 如何使用带有 WebClient 的 spring-security-oauth2 自定义 OAuth2 令牌请求的授权标头?