【问题标题】:Django adding multiple items to one category CheckboxSelectMultiple() using Django FormsDjango 使用 Django 表单将多个项目添加到一个类别 CheckboxSelectMultiple()
【发布时间】:2017-02-18 10:41:27
【问题描述】:

我需要将多个 CampaignTypes 分配给不使用 Django FormsModels 的 Campaign。 一次选择多个 CapaignType,仅将 CapaignType 添加到一个活动中。谢谢,我将不胜感激

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,
        }

【问题讨论】:

    标签: django django-models django-forms django-views many-to-many


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-08
      • 1970-01-01
      • 2021-03-14
      • 1970-01-01
      • 2013-08-04
      • 1970-01-01
      • 2011-06-22
      相关资源
      最近更新 更多