django - 如何在 M2M djnago 中获取每个选择的每个 id
问题描述
我想获取所选 imeis 的 ID
class Mobile(models.Model):
mobile = models.CharField(max_length=20,unique=True)
quantity = models.IntegerField()
imei = models.ManyToMany(Imei,on_delete=models.CASCADE)
class Imei(models.Model):
imei = models.CharField(max_length=13,unique=True)
active = models.BooleanField(default=True)
如果我选择了 10 个 imei,我想获得所选 imeis 的 10 个 ID!?我试过这种方法,但没有人奏效!
instance.imei__id
instance.imei.id
instance.imei_id
感谢您的帮助
解决方案
instance.imei
是经理。您可以通过以下方式访问Imei
对象:
instance.imei.all() # QuerySet of Imei objects
或者,如果您只对对象的主键 ( pk
s)感兴趣Imei
:
instance.imei.values_list('pk', flat=True) # QuerySet of Imei primary keys
编辑:您可以更新所有值:
instance.imei.all().update(active=False)
例如,您可以在其中运行它CreateView
:
class MyCreateView(CreateView):
model = Mobile
# …
def form_valid(self, form):
result = super().form_valid(form)
self.object.imei.all().update(active=False)
return result
或“嵌套” ManyToManyField
:
class MyCreateView(CreateView):
model = Mobile
# …
def form_valid(self, form):
result = super().form_valid(form)
Imei.objects.filter(selectmobile__item=self.object).update(active=False)
return result
推荐阅读
- ros - HTC Vive 到 Baxter 坐标系
- angular - Angular 6,单个延迟加载模块中的共享模块导致应用程序无法进行更改
- spring-boot - 使用带有嵌入式 Eureka 服务器的 RouterFunction
- java - 发送带有未来时间戳的证书
- scala - Spark Driver 死了,但没有杀死应用程序
- rest - Checkout.js + 服务器端 -> country_code 和使用 REST API /v1/payments/payment 的电话问题
- php - Slim 应用程序错误数据库
- c# - 执行 NodeMouseClick 无效
- selenium - 即使打开了多个 chrome 实例,selenium 中的 getWindowHandles 始终将大小返回为 1
- flutter - AppBar 下方的 Flutter Drawer