Django adding multiple items to one category CheckboxSelectM



我需要分配多个Campaign类型到一个Campaign使用Django formmodels。一次选择许多CapaignTypes,只将CapaignTypes添加到一个活动中。谢谢,我将感谢任何帮助

class Campaign(models.Model):
    client_id = models.ForeignKey(Company)
    name = models.CharField(max_length=45, null=True)
    campaign_status = models.ForeignKey(CampaignStatus)

    def __str__(self):
        return self.name
class Campaign_type(models.Model):
    campaign_type = models.CharField(max_length=45)
    client_id = models.ForeignKey(Company)
    campaign_id = models.ManyToManyField(Campaign, verbose_name='Campaign(s)')
    def __str__(self):
        return self.campaign_type + ' ' + str(self.client_id)

我的代码form.py

class CampaignCampaignTypeForm(forms.ModelForm):
    class Meta:
        model = CampaignType
        exclude = ['campaign_id', 'client_id']
    campaign_type =      forms.ModelMultipleChoiceField(queryset=CampaignType.objects.all())
    def __init__(self, *args, **kwargs):
        company = kwargs.pop("company")
        if kwargs.get('instance'):
             initial = kwargs.setdefault('initial', {})
             initial['campaign_type'] = [t.pk for t in kwargs['instance'].campaing_type_set.all()]
         forms.ModelForm.__init__(self, *args, **kwargs)

我的代码view.py

def add_campaign_type_to_campaign(request, campaign_id):
    if not request.user.is_authenticated():
        return render(request, 'campaign/login.html')
    else:
        client_user = ClientUser.objects.get(client=request.user.pk)
        form = CampaignCampaignTypeForm(data=request.POST or None,    company=client_user.company)
        if form.is_valid():
            campaigntype = form.save(commit=False).clean()
            #client_user = ClientUser.objects.get(client=request.user.pk)
            campaign = Campaign.objects.get(id=campaign_id)
            campaigntype.campaign_id = campaign
            campaigntype.save()
            form.save_m2m()
          #  return render(request, 'campaign/detail_campaign.html',    {'campaign_type': campaign_type})
        context = {
            "form": form,
        }

您尝试过表单吗?SelectMultiple部件?或者如果你可以在前端使用Bootstrap, Select2是一个很好的JS包,可以帮助你进行多次选择。

相关内容

最新更新