如何获取 M2M django 中每个选择的每个 id

how to get each id of each selected in M2M djnago

我想获取所选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,我想获得 10 个所选 imei 的 ID!? 我试过这种方法,但没有人成功!

instance.imei__id 
instance.imei.id
instance.imei_id

感谢你的帮助

instance.imei 经理。您可以通过以下方式访问 Imei 个对象:

instance.imei<b>.all()</b>  # QuerySet of Imei objects

或者如果您只对 Imei 个对象的主键 (pks) 感兴趣:

instance.imei<b>.values_list('pk', flat=True)</b>  # QuerySet of Imei primary keys

编辑:您可以更新所有值:

instance.imei<b>.all().update(active=False)</b>

例如,您可以 运行 在 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

或 "nested" ManyToManyField:

class MyCreateView(CreateView):
    model = Mobile
    # …

    def form_valid(self, form):
        result = super().form_valid(form)
        <b>Imei.objects.filter(</b>selectmobile__item=self.object<b>)</b>.update(active=False)
        return result