Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在没有django模型的情况下在django admin中添加功能?_Django - Fatal编程技术网

如何在没有django模型的情况下在django admin中添加功能?

如何在没有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

我对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(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):
                # ...
        # ...