django - Django保存多对多字段的选定值
问题描述
在这里,我试图将选定的字段保存在 manytomany 字段中。当我尝试保存所选字段时,除所选字段之外的所有字段也会被保存。我怎样才能只保存选定的字段。这是我的模型..
#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')"
#views
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})
这是渲染的模板</p>
<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>
解决方案
表单中的字段与模型中的字段不匹配:
class ProductForm(forms.ModelForm):
...
cmp_id = forms.ModelMultipleChoiceField(queryset=Components.objects.all())
class Meta:
model = Products
fields = ('name', 'product_code','bay','cmp_id')"
推荐阅读
- r - 如何在R中使用应用函数组来计算带有加号分隔符的值的平均值
- asp.net-web-api2 - Web API 一项操作有效,而几乎相同的操作无效?
- typescript - 关于 import * as x from vs import x from 的说明
- spring - 使用 Spring Feign 将 GET 转换为 POST
- wpf - 将画笔定义为从另一个资源获取颜色的资源
- r - 如何正确地将我的函数作为用户输入参数传递?
- jenkins - 需要来自 Jenkins 的正确外观的电子邮件通知:包括自上次构建以来所做的 SVN 更改以及构建期间的错误(如果有)
- vbscript - VBS 快速循环线路
- python - 两点云之间的 3D 插值
- ruby-on-rails - 是否可以保留在 CircleCI 上运行的测试生成的 VCR 磁带