這並不容易做到開箱即用。您需要在Django的管理模塊中管理ListField和EmbeddedModelField類型字段,並執行一些黑客操作來完成它。你必須實現兩個部分:
Use EmbeddedModelField in Django's admin
您需要定義一個處理EmbeddedModelField對象,使其與Django的管理工作的一類。 Here是一個鏈接,你可以找到很棒的示例代碼。以下是演示只是代碼塊:
添加這個類到你的models.py
文件,並使用EmbedOverrideField
代替EmbeddedModelField
在Cart
模型:在forms.py
class EmbedOverrideField(EmbeddedModelField):
def formfield(self, **kwargs):
return models.Field.formfield(self, ObjectListField, **kwargs)
實現一個類有兩個方法:
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
代替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