如何在没有django模型的情况下在django admin中添加功能?
我对django有点陌生,我想在django admin中添加一个功能,以便管理员可以填写一个简单的表单,通过sms网关发送sms。这是表格如何在没有django模型的情况下在django admin中添加功能?,django,Django,我对django有点陌生,我想在django admin中添加一个功能,以便管理员可以填写一个简单的表单,通过sms网关发送sms。这是表格 class sendSms(forms.Form): allCategory = [] for each in categories.objects.all(): allCategory.append((each.id,each.category_name)) allCategory = tuple(allCate
class sendSms(forms.Form):
allCategory = []
for each in categories.objects.all():
allCategory.append((each.id,each.category_name))
allCategory = tuple(allCategory)
allSubcategory = []
for each in subcategory.objects.all():
allSubcategory.append((each.id, each.subcategory_name))
allSubcategory = tuple(allSubcategory)
allCity = []
for each in city.objects.all():
allCity.append((each.id,each.city_name))
allCity = tuple(allCity)
category = forms.Select(choices=allCategory)
subcategories = forms.Select(choices=allSubcategory)
cities = forms.Select(choices=allCity)
message = forms.TextInput()
我不想将表单数据保存在模型中,因此我没有为其创建模型。如何将此表单添加到django admin并处理返回的数据
感谢很久以前(在Django 1.3.1上)我在没有模型的情况下实现了一个管理功能,但是这个时候关于这个主题的文档充其量是稀疏的
从那时起,情况当然发生了变化,但我可以尝试分享我的想法(大致)
结构如下:
spim/
├── __init__.py
├── admin.py
├── models.py
├── requirements.txt
├── settings.py
├── templates
│ └── spim
│ ├── adm.container.html
│ └── inc.container_thumbs.html
├── templatetags
│ └── __init__.py
├── urls.py
├── utils.py
└── widgets.py
\uuuu init\uuuuu.py
空文件
管理员
我创建了一个假的Meta
和一个假的“数据库模型”。
我使用子类django.contrib.admin.ModelAdmin
在管理面板中创建条目并注册它们
例如:
class FakeMeta:
abstract = not True
app_label = __name__.split('.')[-2]
module_name = None
verbose_name = None
verbose_name_plural = None
get_ordered_objects = list
def get_add_permission(self): return 'add_%s' % self.module_name
def get_change_permission(self): return 'change_%s' % self.module_name
def get_delete_permission(self): return 'delete_%s' % self.module_name
def __init__(self, name, verbose_name=None, verbose_plural=None):
self.module_name = name
self.verbose_name = verbose_name or name
self.verbose_name_plural = verbose_plural or '%ss'%self.verbose_name
class Image:
_meta = FakeMeta('image')
class AdminImage(admin.ModelAdmin):
# see django.contrib.admin.options.ModelAdmin.get_urls()
def changelist_view(self, request, extra_context=None):
# ...
def add_view(self, request, form_url='', extra_context=None):
# ...
# ...
django.contrib.admin.site.register([Image], AdminImage)
models.py
结局
基本上这就是我的全部,其他文件与你的主题无关
让我知道这在您的设置中是否可行,以及您是否需要阅读更多代码
附言:我很想看看今天是否可以做得不同。谢谢你的回复。我不明白什么是
[MyClass]
参考对不起,我错了;起初我想给你们一个不可知论的例子,但最后我给了你们一个缩写版本,我忘了放回原来的类名。编辑。对我不起作用!!!不理解models.py中的类映像,它在admin.py上的位置是什么?!?
class Image(object):
def __init__(self, filename, original=None):
# ...
def save(self):
# ...
def get_absolute_url(self):
# ...
# ...