Поле формы Django-nonrel для ListField

Я экспериментирую с django-nonrel на appengine и пытаюсь использовать djangotoolbox.fields.ListField для реализовать отношение "многие ко многим". Как я читал в документации, ListField - это то, что вы можете использовать, чтобы найти обходной путь для djamgo-nonrel, не поддерживающего отношения многие-ко-многим.

Это отрывок из моей модели:

class MyClass(models.Model):
    field = ListField(models.ForeignKey(AnotherClass))

] Итак, если я все правильно понимаю, я создаю список внешних ключей для другого класса, чтобы показать связь с несколькими экземплярами другого класса

При таком подходе все работает нормально ... Без исключений. Я могу создавать объекты MyClass в коде и представлениях. Но когда я пытаюсь использовать интерфейс администратора, я получаю следующую ошибку

No form field implemented for <class 'djangotoolbox.fields.ListField'>

. Я решил попробовать что-то, чего раньше не делал. Создаю собственное поле. На самом деле моя собственная форма для редактирования экземпляров MyClass в интерфейсе администратора. Вот что я сделал:

class MyClassForm(ModelForm):
    field = fields.MultipleChoiceField(choices=AnotherClass.objects.all(), widget=FilteredSelectMultiple("verbose_name", is_stacked=False))
    class Meta:
        model = MyClass

затем я передаю MyClassForm в качестве формы для использования в интерфейсе администратора

class MyClassAdmin(admin.ModelAdmin):
    form = MyClassForm

admin.site.register(MyClass, MyClassAdmin)

Я думал, что это сработает, но это не так. Когда я перехожу в интерфейс администратора, я получаю ту же ошибку, что и раньше. Может ли кто-нибудь сказать, что я здесь делаю не так ... или если у вас есть другие предложения или истории успеха использования ListField , SetField и т. Д. Из djangotoolbox.fields в интерфейсе администратора это было бы очень полезно.

9
задан Rman 5 July 2011 в 22:36
поделиться