Это не так просто сделать из коробки. Вам нужно будет управлять полями типов ListField и EmbeddedModelField в административном модуле Django и выполнить некоторые действия по взлому. Вам придется реализовать две части:
Использовать EmbeddedModelField в админке Django
Вам нужно определить класс, который обрабатывает объекты EmbeddedModelField, чтобы он работал с администратором Django. Здесь - это ссылка, где вы можете найти отличные примеры кодов. Ниже приведены только блоки кода для демонстрации:
Добавьте этот класс в файл models.py
и используйте EmbedOverrideField
вместо EmbeddedModelField
в Cart
модели:
class EmbedOverrideField(EmbeddedModelField):
def formfield(self, **kwargs):
return models.Field.formfield(self, ObjectListField, **kwargs)
Реализация класса в forms.py
, который имеет два метода:
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
Использовать ListFields в админке Django
Вам также нужно определить класс, который обрабатывает объекты ListField, чтобы он работал с администратором Django. Здесь - это ссылка, где вы можете найти отличные примеры кодов. Ниже приведены только блоки кода для демонстрации:
Добавьте этот класс в файл models.py
и ItemsField
вместо ListField
в Cart
модели:
class ItemsField(ListField):
def formfield(self, **kwargs):
return models.Field.formfield(self, StringListField, **kwargs)
Реализация класса в forms.py
, который имеет два метода:
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