Questo non è così facile da fare fuori dalla scatola. Dovrai gestire i campi di tipo ListField e EmbeddedModelField nel modulo di amministrazione di Django e fare un po 'di hacking per farlo. Dovrete implementare due parti:
Use EmbeddedModelField in Django's admin
è necessario definire una classe che gestisce gli oggetti EmbeddedModelField per farlo funzionare con Admin di Django. Here è un link in cui puoi trovare ottimi codici di esempio. Qui di seguito sono blocchi di codice solo per la dimostrazione:
Aggiungere questa classe nel file models.py
e utilizzare EmbedOverrideField
invece di EmbeddedModelField
in Cart
modello:
class EmbedOverrideField(EmbeddedModelField):
def formfield(self, **kwargs):
return models.Field.formfield(self, ObjectListField, **kwargs)
implementare una classe in forms.py
che ha due metodi:
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
È inoltre necessario definire una classe che gestisca gli oggetti ListField per farlo funzionare con l'amministratore di Django. Here è un link in cui puoi trovare ottimi codici di esempio. Qui di seguito sono blocchi di codice solo per la dimostrazione:
Aggiungere questa classe nel file models.py
e ItemsField
invece di ListField
in Cart
modello:
class ItemsField(ListField):
def formfield(self, **kwargs):
return models.Field.formfield(self, StringListField, **kwargs)
Implementare una classe in forms.py
che ha due metodi:
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