django - 如何使用 form.instance 保存多对多数据?
问题描述
我正在写一个应用程序Django
。
如何使用. provider.category
_form
form.instance
楷模
class RequestProvider(models.Model):
category = models.ManyToManyField(Category, related_name="provider_request")
形式
class ProviderForm(forms.ModelForm):
class Meta:
model = RequestProvider
fields = ('category',)
widgets = {
'category': forms.SelectMultiple(
attrs={
'class': 'select2',
'style': 'width: 246px;'
}
),
}
意见
@method_decorator(currency_account_dec, name='dispatch')
class ProviderCreateView(CreateView):
form_class = ProviderForm
template_name = 'provider_create.html'
def form_valid(self, form):
provider_id = self.kwargs.get('provider_id',None)
session_user = self.request.user
if provider_id:
form.instance.provider = Provider.objects.get(pk=provider_id)
form.instance.user = self.request.user
#form.instance.category = form.cleaned_data.get('category')
return super(ProviderCreateView,self).form_valid(form)
def get_context_data(self, **kwargs):
provider_id = self.kwargs.get('provider_id',None)
ss = RequestProvider.objects.filter(user=self.request.user)
for s in ss:
print(s.category)
ctx = super(ProviderCreateView, self).get_context_data(**kwargs)
ctx['organizations'] = Organization.objects.filter(user=self.request.user)
ctx['payments'] = Payment.objects.all()
if provider_id:
this_provider = Provider.objects.get(pk=provider_id)
ctx['this_provider'] = this_provider
ctx['categories'] = Category.objects.all()
ctx['roles'] = this_provider.role.all()
ctx['payments'] = Payment.objects.all()
ctx['deliveries'] = Delivery.objects.all()
return ctx
解决方案
我相信你能做到form.save()
推荐阅读
- android - ADB 无法在 Ubuntu 18.04 上检测到 Android 设备
- php - 使用 Excel 或 php 随机增加时间和日期
- swift - 在另一个类中使用一个类中的变量
- libraries - Buildroot 添加源自 FPC 的自定义库
- python - 根据正则表达式中的相同值选择组
- selenium - Safari驱动程序不会关闭
- java - 如何使用 java API 在 hbase 2.0.0 中关闭 WAL?
- php - Docker:在本地安装 apache 的容器中使用 PHP
- c# - 在 Integer.ToString() 上添加了 HTML 格式
- amazon-s3 - to_csv 函数中的服务器端加密