Tôi có ứng dụng Django và muốn hiển thị nhiều hộp kiểm tra trong giao diện quản trị của Django. Tôi không muốn tạo ra một mô hình riêng biệt cho các lựa chọn của mình bằng cách sử dụng một ManyToManyField.Mô hình Django.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
Tuy nhiên, khi tôi cố gắng để thêm doanh nghiệp có loại "Quầy bar":
Chọn lựa chọn hợp lệ. 1 không phải là một trong những lựa chọn có sẵn.
Tương tự như vậy với khi tôi cố gắng để thêm một doanh nghiệp với nhiều giá trị được chọn:
Chọn một lựa chọn hợp lệ. 1,2 không phải là một trong những lựa chọn có sẵn.
Làm thế nào 1 không phải là lựa chọn hợp lệ, xem xét (1, "Foo") là sự lựa chọn của tôi? Là nó không hợp lệ để sử dụng Django được xây dựng trong Comma Separated Integer lĩnh vực như thế này?