0

複数のキャンペーンタイプをキャンペーンのunsigned Django FormsModelsに割り当てる必要があります。 多くのキャンペーンタイプを一度に選択し、1つのキャンペーンにのみキャンペーンタイプを追加します。私はview.pyDjangoが1つのカテゴリに複数の項目を追加するDjangoフォームを使用してCheckboxSelectMultiple()を呼び出す

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

答えて

0

で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) 

私のコードで

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) 

私のコードの任意の助けを感謝しますおかげで、あなたはforms.SelectMultipleウィジェットを試してみますか?また、フロントエンドでBootstrapを使用することができれば、Select2は複数の選択に役立つ優れたJSパッケージです。

関連する問題