Это не так просто сделать из коробки. Вам нужно будет управлять полями типа 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
Использовать поля ListField в панели администратора 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
person
Saeed
schedule
23.11.2015