Django Сохранение выбранных значений поля ManytoMany - PullRequest
0 голосов
/ 14 марта 2019

Здесь я пытаюсь сохранить выбранные поля во множестве полей. Когда я пытаюсь сохранить выбранные поля, все поля, кроме выбранных, также сохраняются. Как я могу сохранить только выбранные поля. вот моя модель ..

#model 
class Products(models.Model):
    name = models.CharField(max_length=128)
    product_code = models.CharField(max_length=128)
    cmp_id = models.ManyToManyField(Components, blank=True)
    bay_id = models.ManyToManyField(ScanningBay, blank=True)
    def __str__(self):
        return self.name

# форма

class ProductForm(forms.ModelForm):
    name =  forms.CharField(max_length=15,widget=forms.TextInput(attrs={'class':'form-control','placeholder': 'Product Name','size': '40'}))
    product_code = forms.CharField(max_length=15, widget=forms.TextInput(
        attrs={'class': 'form-control', 'placeholder': 'Product Code', 'size': '40'}))
    bay = forms.ModelMultipleChoiceField(queryset=ScanningBay.objects.all())
    component = forms.ModelMultipleChoiceField(queryset=Components.objects.all())
​
    class Meta:
        model = Products
        fields = ('name', 'product_code','bay','component')"

# вид

def products(request):
    if request.method == 'POST':
        p_form = ProductForm(request.POST or None)
        new = p_form.save(commit=False)
        new.save()
        z = p_form.save_m2m()
        print (z)
        return HttpResponse("success")
    else:
        pdct_form = ProductForm()
        return render(request, 'app/products.html', {'pdct':pdct_form})

это шаблон, представленный

<form id="test" class="impexform" action="{%url 'products'%}" method="POST">
                     {% csrf_token %}>
                    {{pdct}}
<button type="submit" class="btn btn-sm btn-danger mt-3"
                            style="background:#ed2526; border-radius: 30px; width: 8rem;">Add Product</button>
</form>

1 Ответ

0 голосов
/ 14 марта 2019

Поля в вашей форме не совпадают с полями вашей модели:

class ProductForm(forms.ModelForm):
    ...
    cmp_id = forms.ModelMultipleChoiceField(queryset=Components.objects.all())
​
    class Meta:
        model = Products
        fields = ('name', 'product_code','bay','cmp_id')"
...