Я хочу создать представление, которое может отображать ModelForm для различных моделей. Он делает это, получая тип содержимого модели, а затем динамически создавая модельную форму, связанную с этой конкретной моделью. Вот моя модель:Django - Динамический импорт модели
from django.db import models
class SomeModel(models.Model):
name = models.CharField(max_length=150)
def __unicode__(self):
return self.name
И в том же приложении есть forms.py со следующей формой:
from django.forms import ModelForm
from someapp.models import SomeModel
class SomeModelForm(ModelForm):
class Meta:
model = SomeModel
fields = ('name',)
Так что я хочу сделать внутри мой файл зрения, это вернуть правильный формы для каждой модели динамически. Я пробовал следующее:
from django.db import models
from someapp.forms import SomeModelForm
class SomeModel(models.Model):
name = models.CharField(max_length=150)
form = SomeModelForm
def __unicode__(self):
return self.name
Но это не работает из-за очевидного кругового импорта. Кто-нибудь знает, как я могу это сделать? Я попытался использовать файл modelform_factory, но, похоже, он игнорирует любые мои пользовательские формы модели в forms.py.
EDIT: Я должен упомянуть, что у меня не будет экземпляра модели, только самого класса модели, поэтому есть метод, который внутри модели не работает (однако, он работает если вы вызываете его на экземпляр модели)
В ответ на ваши изменения, вы можете использовать STATICMETHOD или classmethod. Я обновил свой пример. – Alasdair