Я экспериментирую с 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
в интерфейсе администратора это было бы очень полезно.