首页 > 解决方案 > django inlineformset 中的动态额外字段

问题描述

我正在为一家移动商店开发一个项目,该项目使用IMEI手机每部手机都有自己的 imei,而销售手机的商店的所有者取决于其 IMEI,现在当管理员添加新手机时MobileStorage,例如数量 = 20手机iphone11X有 20 个不同的 IMEI,我希望管理员在添加新手机时允许他选择数量(20),那么额外字段将为 20,如果他在数量字段中填写 10,IMEI 的额外字段将为 10

class MobileStorage(models.Model):
    admin = models.ForeignKey(User,on_delete=models.CASCADE)
    mobile = models.ForeignKey(Mobile,on_delete=models.CASCADE)
    quantity = models.PositiveIntegerField()

class Imei(models.Model):
    imei = models.CharField(max_length=50,verbose_name='IMEI',unique=True)
    mobile = models.ForeignKey(MobileStorage,on_delete=models.CASCADE)
class Mobile(models.Model):
    mobile = models.CharField(max_length=50,unique=True)

我的表格.py

class MobileStorageForm(forms.ModelForm):
    mobile = forms.ModelChoiceField(queryset=Mobile.objects.all(),empty_label='')
    class Meta:
       model = MobileStorage
       fields = [
        'mobile','quantity'
       ]

class ImeiForm(forms.ModelForm):
    class Meta:
       model = Imei
       fields = ['imei']

我想控制额外的字段取决于模型中的数量,并在模型MobileStorage中创建例如 20 个实例Imei

MobileStorageFormInlineSet = inlineformset_factory(
    MobileStorage,Imei,form=ImeiForm,fields=('imei'),extra=2,can_delete=False
)

我已经完成了前端,但它只保存了最后 2 个字段 bcs 额外字段是 2

任何人有一个想法我很感激

标签: djangodjango-formsinline-formset

解决方案


Hey U 也可以使用 Jquery 通过单击前端页面 django 中的添加或删除按钮来添加字段


推荐阅读