[英]How to Generate a unique Coupon Code In the Django Admin panel for bulk
[英]Django, how to generate an admin panel without models?
我正在構建一個相當大的項目,基本上由以下內容組成:
服務器1:基於冰的服務。 Glacier2用於會話處理。 防火牆允許訪問Glacier2。
服務器2:通過Glacier2為Ice服務提供的Web界面(讀取,公共)。 通過Glacier 2提供Ice服務的管理界面。
我關心的是網絡界面。 我想使用Django,因為它都是用python編寫的,並且具有非常有用的自動管理面板生成器。
Web界面不訪問任何數據庫。 它通過Glacier2路由器連接到Server#1上的Ice服務,並使用這些服務公開的API來操作數據。
正如您可能知道的那樣,Django中的admin生成依賴於Django的ORM的使用; 我沒有使用,因為我沒有數據庫可以訪問。
所以我需要生成管理面板,但是,我不需要像ORM那樣進行標准數據訪問,而是需要攔截任何“db-access”調用並將它們轉換為Ice服務調用,然后獲取服務的輸出(如果有的話,將其轉換為ORM通常返回的任何內容並將控制權返回給Django。
誰知道我怎么能這樣做? 我需要什么子類? 任何具體的想法?
謝謝你的時間。
我認為可能有一種比編寫自定義ORMS更簡單的方法來獲得所需的管理集成。 我在一個允許通過其控制面板API管理Webfaction電子郵件帳戶的應用程序中使用它。
看看models.py,admin.py和urls.py這里: Django的webfaction
要在管理索引頁面上創建條目,請使用managed = False的虛擬模型
使用admin注冊該模型。
然后,您可以攔截管理員網址並將其引導至您自己的視圖。
如果管理員提供的添加/編輯/刪除操作對您的應用有意義,這是有意義的。 否則,最好覆蓋管理索引或更改列表模板以包含您自己的自定義操作
contrib.admin的真正力量是django Forms 。 從本質上講,管理工具基本上是自動生成一個Form,以匹配一個帶有一點urls.py路由的模型。最后,除了管理工具之外,使用django Forms可能更容易。
你可以“模擬”一些類,所以它看起來像一個模型,但它確實代理了你的API
FE
class QuerysetMock(object):
def all():
return call_to_your_api()
[...]
class MetaMock(object):
def fields():
return fields_mock_objects..
verbose_name = ''
[...]
class ModelMock(object):
_meta = MetaMock()
objects = QuerysetMock()
admin.site.register(ModelMock)
這可能有用..但你需要做很多django.model兼容的東西
django ORM有一個可插拔的后台,這意味着你可以為不是RDBMS的東西編寫后端。 這可能是一個相當大的任務,但是開始的好地方是Malcolm Tredinnick在DjangoCon 2008, ORM內部的演講。
否則,您可以完全繞過ORM,並手動編寫表單以進行所需的訪問。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.