在保存Django getting的同时;此选项不是可用选项之一。”;

在保存Django getting的同时;此选项不是可用选项之一。”;,django,django-models,django-forms,Django,Django Models,Django Forms,我正试图保存一个带有ForeignKey(purchaseconstructed)的表单 class contracts(models.Model): productDetailID=models.ForeignKey('Inventory.productDetails',related_name='+',on_delete=models.CASCADE,verbose_name='Select Product',default=None) supplierID=models.F

我正试图保存一个带有ForeignKey(purchaseconstructed)的表单

class contracts(models.Model):
    productDetailID=models.ForeignKey('Inventory.productDetails',related_name='+',on_delete=models.CASCADE,verbose_name='Select Product',default=None)
    supplierID=models.ForeignKey(suppliers,on_delete=models.CASCADE,verbose_name='Select Supplier',default=None)
    totalUnits=models.IntegerField(verbose_name='Total Units',editable=False,default=None)
    ratePerUnit=models.IntegerField(verbose_name='Rate Per Unit',default=None)
    saleTax=models.IntegerField(verbose_name='Sale Tax',default=None)
    incomeTax=models.IntegerField(verbose_name='Income Tax',default=None)
    saleTaxwithHeld=models.IntegerField(verbose_name='Sale Tax with Held',default=None)
    startDate=models.DateField(verbose_name='Start Date',default=None)
    endDate=models.DateField(verbose_name='End Date',default=None)
    manulContractNumber=models.IntegerField(verbose_name='Manul Contract Number',default=None)
    paymentDays=models.IntegerField(verbose_name='Payment Days',default=None)
    remarks=models.CharField(verbose_name='Remarks',max_length=100,default=None)
    dateOfEntry=models.DateField(editable=False,default=datetime.now())

    def __str__(self):
        return str(self.productDetailID.name)
这是我的库存模型,它是采购合同的外键

class inventoryIn(models.Model):


    supplierID=models.ForeignKey('Purchase.suppliers',editable=False,on_delete=models.CASCADE,verbose_name='Supplier')
    productID=models.ForeignKey(products,editable=False,on_delete=models.CASCADE)
    purchaseContractID=models.ForeignKey('Purchase.contracts',on_delete=models.CASCADE,verbose_name='Contract ID')
    unitsIn=models.IntegerField(verbose_name='Enter No of Bags')
    MYCHOCIES = (('orginal', 'ORGINAL'), ('dummy', 'DUMMY'))
    doType = models.CharField(blank=True, choices=MYCHOCIES, verbose_name='Select DO Type', max_length=20)
    doID=models.IntegerField(verbose_name='Do No')
    doImage=models.ImageField(upload_to='doImage/%Y/%m/%d',verbose_name='Do Image')
    invoiceID=models.IntegerField(verbose_name='Invoice No')
    invoiceImage=models.ImageField(upload_to='inventoryIn/%Y/%m/%d')
    agingDate=models.DateField(verbose_name='Receiving Date')
    labReportImage = models.ImageField(upload_to='labReportImage/%Y/%m/%d', blank=True,verbose_name='Lab Report Image')
    enterPaymentDays = models.IntegerField(verbose_name='Enter Payment Days', blank=True, default=None)
    dateOfEntry=models.DateField(default=datetime.now())
    def __str__(self):
        return self.supplierID
这是我的admin.py,我在这里添加了管理表单,还添加了一个js,添加了一些字段

class inventoryInAdmin(admin.ModelAdmin):
    fields = ['purchaseContractID','unitsIn','doType','doID','doImage','invoiceID','invoiceImage','agingDate','labReportImage','enterPaymentDays']

    class Media:
        js = ('js/addInventory.js',)

admin.site.register(inventoryIn,inventoryInAdmin) 
它不允许我提交表格,并给我错误“选择一个有效的选择。该选择不是可用的选择之一。”

我通过在InventoryIn模型中添加save方法解决了这个问题

class inventoryIn(models.Model):


    supplierID=models.ForeignKey('Purchase.suppliers',editable=False,on_delete=models.CASCADE,verbose_name='Supplier')
    productID=models.ForeignKey(products,editable=False,on_delete=models.CASCADE)
    purchaseContractID=models.ForeignKey('Purchase.contracts',on_delete=models.CASCADE,verbose_name='Contract ID')
    unitsIn=models.IntegerField(verbose_name='Enter No of Bags')
    MYCHOCIES = (('orginal', 'ORGINAL'), ('dummy', 'DUMMY'))
    doType = models.CharField(blank=True, choices=MYCHOCIES, verbose_name='Select DO Type', max_length=20)
    doID=models.IntegerField(verbose_name='Do No')
    doImage=models.ImageField(upload_to='doImage/%Y/%m/%d',verbose_name='Do Image')
    invoiceID=models.IntegerField(verbose_name='Invoice No')
    invoiceImage=models.ImageField(upload_to='inventoryIn/%Y/%m/%d')
    agingDate=models.DateField(verbose_name='Receiving Date')
    labReportImage = models.ImageField(upload_to='labReportImage/%Y/%m/%d', blank=True,verbose_name='Lab Report Image')
    enterPaymentDays = models.IntegerField(verbose_name='Enter Payment Days', blank=True, default=None)
    dateOfEntry=models.DateField(default=datetime.now())
    def __str__(self):
        return str(self.supplierID)
    def save(self, force_insert=False, force_update=False, using=None,
             update_fields=None):
        from Purchase.models import contracts,suppliers
        contract = contracts.objects.values('supplierID', 'productDetailID').filter(id=self.purchaseContractID.id)
        supplier=contract[0].get("supplierID")
        product=contract[0].get("productDetailID")

        self.supplierID=suppliers.objects.get(id=supplier)
        self.productID=products.objects.get(productDetailsID=product)
        super(inventoryIn,self).save()
我还将我的两个字段editable=False

supplierID=models.ForeignKey('Purchase.suppliers',editable=False,on_delete=models.CASCADE,verbose_name='Supplier')
    productID=models.ForeignKey(products,editable=False,on_delete=models.CASCADE)

我通过在InventoryIn模型中添加save方法解决了这个问题

class inventoryIn(models.Model):


    supplierID=models.ForeignKey('Purchase.suppliers',editable=False,on_delete=models.CASCADE,verbose_name='Supplier')
    productID=models.ForeignKey(products,editable=False,on_delete=models.CASCADE)
    purchaseContractID=models.ForeignKey('Purchase.contracts',on_delete=models.CASCADE,verbose_name='Contract ID')
    unitsIn=models.IntegerField(verbose_name='Enter No of Bags')
    MYCHOCIES = (('orginal', 'ORGINAL'), ('dummy', 'DUMMY'))
    doType = models.CharField(blank=True, choices=MYCHOCIES, verbose_name='Select DO Type', max_length=20)
    doID=models.IntegerField(verbose_name='Do No')
    doImage=models.ImageField(upload_to='doImage/%Y/%m/%d',verbose_name='Do Image')
    invoiceID=models.IntegerField(verbose_name='Invoice No')
    invoiceImage=models.ImageField(upload_to='inventoryIn/%Y/%m/%d')
    agingDate=models.DateField(verbose_name='Receiving Date')
    labReportImage = models.ImageField(upload_to='labReportImage/%Y/%m/%d', blank=True,verbose_name='Lab Report Image')
    enterPaymentDays = models.IntegerField(verbose_name='Enter Payment Days', blank=True, default=None)
    dateOfEntry=models.DateField(default=datetime.now())
    def __str__(self):
        return str(self.supplierID)
    def save(self, force_insert=False, force_update=False, using=None,
             update_fields=None):
        from Purchase.models import contracts,suppliers
        contract = contracts.objects.values('supplierID', 'productDetailID').filter(id=self.purchaseContractID.id)
        supplier=contract[0].get("supplierID")
        product=contract[0].get("productDetailID")

        self.supplierID=suppliers.objects.get(id=supplier)
        self.productID=products.objects.get(productDetailsID=product)
        super(inventoryIn,self).save()
我还将我的两个字段editable=False

supplierID=models.ForeignKey('Purchase.suppliers',editable=False,on_delete=models.CASCADE,verbose_name='Supplier')
    productID=models.ForeignKey(products,editable=False,on_delete=models.CASCADE)

您可以显示您的选项-->选项=我的巧克力这些选项是动态的。您在哪里定义了“采购.合同”库存是否有任何保存挂钩?没有库存没有挂钩。您可以显示您的选项-->选项=我的巧克力这些选项是动态的。您在哪里定义了“采购.合同”库存是否有任何保存挂钩?没有库存没有钩子。