开箱即用并不容易。您需要在 Django 的管理模块中管理 ListField 和 EmbeddedModelField 类型的字段,并进行一些修改来完成它。您必须实现两个部分:
Use EmbeddedModelField in Django's admin
您需要定义一个处理 EmbeddedModelField 对象的类,以使其与 Django 的管理员一起工作。 Here 是一个链接,您可以在其中找到出色的示例代码。下面只是演示的代码块:
将此类添加到您的models.py 文件中,并在Cart 模型中使用EmbedOverrideField 而不是EmbeddedModelField:
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
Use ListFields in Django's admin
您还需要定义一个处理 ListField 对象的类,以使其与 Django 的管理员一起工作。 Here 是一个链接,您可以在其中找到出色的示例代码。下面只是演示的代码块:
将此类添加到您的models.py 文件和ItemsField,而不是Cart 模型中的ListField:
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