如何在多对多关系中保存来自复选框输入的多个数据?

问题描述

我使用 ManyToManyField 创建了一个复选框字段。当我在管理页面上创建对象时,此方法有效,它返回所有对象都有选择,但我不知道如何使用具有多对多关系的复选框创建多个对象以及如何保存它?>

可以看到如下代码

models.py

AMENITIES = [
    ("Electricity","Electricity"),("Water","Water"),("Gas","Gas"),("Elevator","Elevator"),("Maids Room","Maids Room"),("Garden","Garden"),("Air Condition","Air Condition"),("Pool","Pool"),]


class myChoices(models.Model):
    choice = models.CharField(max_length=154,unique=True,choices=AMENITIES)

    def __str__(self):
        return self.choice


class Store(models.Model):
    amenities = models.ManyToManyField(myChoices)
    user = models.ForeignKey(User,on_delete=models.CASCADE,default=1)
    title = models.CharField(max_length=255)
    price = models.DecimalField(max_digits=100,decimal_places=2)
    bathroom = models.PositiveSmallIntegerField(default=0)
    bedroom = models.PositiveSmallIntegerField(default=0)
    furnished = models.CharField(max_length=100,choices=FURNISHED,default=FURNISHED[0][0])
    ad_type = models.CharField(max_length=100,choices=ADTYPE,default=ADTYPE[0][0])
    area = models.DecimalField(max_digits=100,decimal_places=3)
    level = models.PositiveIntegerField(default=1)
    detail = models.TextField(max_length=1000)
    image = models.ImageField(upload_to='media/',default='images/image_cover.jpg',blank=False)
    date = models.DateTimeField(auto_Now_add=True)
    address = models.CharField(max_length=20,null=True)
    product_type = models.CharField(max_length=15,blank=False,default="Home")

    def __str__(self):
        return self.title

forms.py

AMENITIES = [
    ("Electricity",]


class StoreForm(forms.ModelForm):
    price = forms.IntegerField(widget=forms.NumberInput(attrs={'placeholder': 'price...'}))
    title = forms.CharField(widget=forms.TextInput(attrs={'placeholder': 'title...'}))
    amenities = forms.MultipleChoiceField(required=False,widget=forms.CheckBoxSelectMultiple,choices=AMENITIES)
    area = forms.FloatField(label='Area(m2)',widget=forms.NumberInput(attrs={'placeholder': 'Area'}))
    detail = forms.CharField(required=False,widget=forms.Textarea(attrs={'placeholder': 'type Details'}))
    image = forms.ImageField(required=True)
    address = forms.CharField(required=True,widget=forms.TextInput(attrs={'placeholder': 'type possession address'}))
    product_type = forms.CharField(required=True,widget=forms.TextInput(attrs={'placeholder': 'type possession type i.e: house,village'}))

    class Meta:
        model = Store
        fields = '__all__'
        exclude = ['date','user']

views.py

def createAd(request):
    if request.method == 'POST':
        form = StoreForm(request.POST,request.FILES)
        if form.is_valid():
            form.user = request.user
            form.save()
            return redirect("store:store")
    else:
        form = StoreForm(None)
    return render(request,'store/create_ad.html',{'form': form})

我面临的问题是我无法确定保存这种关系的正确方法我只知道当我保存来自复选框输入的这些对象时,它们作为列表出现,因此数据库无法保存数据列表,因此如果我的意见是正确的,很明显我可以做的适合过程来保存复选框输入中的数据。

解决方法

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

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

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