簡體   English   中英

Django Admin中的多選表單

[英]Multiselect form in Django Admin

我試圖將多選小部件添加到與字符字段相對應的管理視圖中。

models.py

class Campaign(models.Model):
    name = models.CharField(max_length=128)
    start_date = models.DateTimeField(default=timezone.now)
    end_date = models.DateTimeField(blank=True, null=True)
    budget = models.IntegerField()
    target = models.IntegerField()
    component_choices = models.CharField(max_length=128, null=True, blank=True)

管理員

class CampaignAdmin(admin.ModelAdmin):
    fieldsets = (
        ('Main', {
            'fields': ('name', ('start_date', 'end_date',),),
        }),
        ('Budget', {
            'fields': ('budget', 'target',),
        }),
        ('Payment', {
            'fields': ('payment_terms', 'payment_initial', 'payment_per_mvm'),
        }),
    )

    form = ComponentChoicesForm

admin.site.register(Campaign, CampaignAdmin)

表格

class ComponentChoicesForm(ModelForm):

    component_type_choices = tuple(
        (x.id, str(x))
        for x in ComponentType.objects.all()
    )

    class Meta:
        model = ComponentType
        fields = '__all__'

    available_components = forms.MultipleChoiceField(
        choices=component_type_choices)

但是,上面的代碼僅顯示fieldsets ,而不顯示ComponentTypeChoices表單。 我的目的是讓用戶從我在forms.py中的admin.py中生成的選項中進行選擇,以便填充Campaign.component_choices字段。

您已經為其他模型創建了表單,並在Campaign模型管理員中使用了該表單。 您應該為Campaign模型而不是ComponentType創建模型形式。

您的表單和模型管理員應該是這樣的,

表格

class CampaignForm(ModelForm):

    class Meta:
        model = Campaign
        fields = '__all__'

    OPTIONS = (('a', 'A'),('b', 'B'),('c', 'C'))

    available_components = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple,
                                     choices=OPTIONS) 

管理員

class CampaignAdmin(admin.ModelAdmin):
    form = CampaignForm

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM