Django-nonrel form field for ListField

前端 未结 4 1680
佛祖请我去吃肉
佛祖请我去吃肉 2020-12-08 09:21

I\'m experimenting with django-nonrel on appengine and trying to use a djangotoolbox.fields.ListField to implement a many-to-many relation. As I re

4条回答
  •  北海茫月
    2020-12-08 09:29

    You could avoid a custom form class for such usage by inquiring for the model object

    class ModelListField(ListField):
      def __init__(self, embedded_model=None, *args, **kwargs):
      super(ModelListField, self).__init__(*args, **kwargs)
      self._model = embedded_model.embedded_model
    
      def formfield(self, **kwargs):
        return FormListField(model=self._model, **kwargs)
    
    class ListFieldWidget(SelectMultiple):
      pass
    
    class FormListField(MultipleChoiceField):
      widget = ListFieldWidget
    
      def __init__(self, model=None, *args, **kwargs):
        self._model = model
        super(FormListField, self).__init__(*args, **kwargs)
        self.widget.choices = [(unicode(i.pk), i) for i in self._model.objects.all()]
    
      def to_python(self, value):
        return [self._model.objects.get(pk=key) for key in value]
    
      def clean(self, value):
        return value
    

提交回复
热议问题