Điều này không dễ dàng thực hiện trong hộp. Bạn sẽ cần phải quản lý các trường kiểu ListField và EmbeddedModelField trong mô-đun quản trị của Django và thực hiện một số hack để hoàn thành nó. Bạn sẽ phải thực hiện hai phần:
Use EmbeddedModelField in Django's admin
Bạn cần phải xác định một lớp học để xử lý đối tượng EmbeddedModelField để làm cho nó làm việc với quản trị viên của Django. Here là liên kết nơi bạn có thể tìm thấy mã mẫu tuyệt vời. Dưới đây chỉ là khối mã cho trình diễn:
Thêm lớp này vào tập tin models.py
bạn và sử dụng EmbedOverrideField
thay vì EmbeddedModelField
trong Cart
mô hình:
class EmbedOverrideField(EmbeddedModelField):
def formfield(self, **kwargs):
return models.Field.formfield(self, ObjectListField, **kwargs)
Thực hiện một lớp trong forms.py
rằng có hai phương pháp:
class ObjectListField(forms.CharField):
def prepare_value(self, value):
pass # you should actually implement this method
def to_python(self, value):
pass # Implement this method as well
Use ListFields in Django's admin
Bạn cũng cần định nghĩa một lớp xử lý đối tượng ListField để làm cho nó hoạt động với quản trị viên của Django. Here là liên kết nơi bạn có thể tìm thấy mã mẫu tuyệt vời. Dưới đây chỉ là khối mã cho trình diễn:
Thêm lớp này vào tập tin models.py
của bạn và ItemsField
thay vì ListField
trong Cart
mô hình:
class ItemsField(ListField):
def formfield(self, **kwargs):
return models.Field.formfield(self, StringListField, **kwargs)
Thực hiện một lớp trong forms.py
rằng có hai phương pháp:
class StringListField(forms.CharField):
def prepare_value(self, value):
pass # you should actually implement this method
def to_python(self, value):
pass # Implement this method as well