如何使用 m2msignal 使得内联额外的数量等于从多对多字段 django 中选择的选项数量

问题描述

我在 Django 中有 2 个模型: 优惠模式-

class Offer(models.Model):
    Offer_Name=models.CharField(max_length=200,blank=False,verbose_name = "Auction Name")
    vendor=models.ManyToManyField(User,limit_choices_to={'is_vendor': True},help_text = "Please select vendor valid for this offer",)

出价模式:

class Bid(models.Model):
    offer=models.ForeignKey(Offer,on_delete=models.CASCADE)
    Bid=models.IntegerField(blank=False,null=False,verbose_name = "Inital Bid Amount")
 

这两个模型都通过嵌套的stackedinline admin在django中链接

class BidInline(nested_admin.nestedStackedInline):
    model = Bid
    extra=0
    #max_num=vendorcount(Offer.vendor.through)
    exclude = ('ven_id','new_bid','rank')
class OfferAdmin(nested_admin.nestedModelAdmin):
    form =select2_modelform(Offer)
    inlines = [
        BidInline,]

我尝试使用 m2m 信号获取供应商多对多字段中选择的选项数量,并将其输入到 Bidinline 中的 max_num 字段,以便供应商中选择的选项数量= 额外投标表格的数量

这是我的信号:

@receiver(m2m_changed,sender=Offer.vendor.through)
def vendorcount(sender,**kwargs):
    instance = kwargs.pop('instance',None)
    pk_set = kwargs.pop('pk_set',None)
    action = kwargs.pop('action',None)
    if action == "pre_add":
        for i in pk_set:
            instance.save()
    print(len(pk_set))
    return len(pk_set)

通过这个信号,我得到了长度,但在我点击保存按钮后。 我如何在多对多字段中选择选项以便更新 max_num 时获得它? 请帮忙。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...