Mam aplikację Django i chcę wyświetlić pola wyboru z wyborem wielokrotnym w interfejsie administratora Django. Nie chcę tworzyć osobnego modelu dla moich wyborów za pomocą ManyToManyField.Django models.CommaSeparatedIntegerField with forms.CheckboxSelectMultiple widget
models.py
from django.db import models
STAFF_BUSINESS_TYPES = {
(1, "Foo"),
(2, "Bar"),
(3, "Cat"),
(4, "Dog")
}
class Business(models.Model):
name = models.CharField(max_length=255, unique=True)
business_types = models.CommaSeparatedIntegerField(max_length=32, choices=STAFF_BUSINESS_TYPES)
forms.py
from business.models import Business, STAFF_BUSINESS_TYPES
from django.forms import CheckboxSelectMultiple, ModelForm, MultipleChoiceField
class BusinessForm(ModelForm):
business_types = MultipleChoiceField(required=True, widget=CheckboxSelectMultiple, choices=STAFF_BUSINESS_TYPES)
class Meta:
model = Business
fields = ['name', 'business_types']
def clean_business_types(self):
data = self.cleaned_data['business_types']
cleaned_data = ",".join(data)
return cleaned_data
admin.py
from django.contrib import admin
from business.models import Business
from business.forms import BusinessForm
@admin.register(Business)
class BusinessAdmin(admin.ModelAdmin):
form = BusinessForm
Jednak gdy próbuję dodaj firmę o typie "Bar":
Wybierz poprawny wybór. 1 nie jest jednym z dostępnych wyborów.
Podobnie ze gdy próbuję dodać interesy z wielu wartości wybranych:
Wybierz poprawny wybór. 1,2 nie jest jednym z dostępnych wyborów.
W jaki sposób 1 nie jest prawidłowym wyborem, biorąc pod uwagę (1, "Foo") jest w ramach moich wyborów? Czy to nieważne, aby użyć tak wbudowanego w Django pola Comma Separated Integer?