我有一個django 1.5項目在Apache服務器上使用運行mysql的django模型。django模型的遠程訪問
class Person(models.Model):
first_name = models.CharField(max_length=100)
last_name = models.CharField(max_length=100)
birthdate = models.DateField()
class Book(models.Model):
name = models.CharField(max_length=100)
author = models.ForeignKey(Person)
我也有必須使用這些模型在遠程計算機上運行一個python/Django應用程序(使用Django自定義命令)。
- 遠程應用程序共享與服務器相同的模型定義
- 遠程應用需求只讀到模型訪問
- 遠程應用程序不能有服務器數據庫的完全轉儲,因爲服務器必須根據用戶權限返回的查詢集
- 遠程應用程序只能HTTP連接到服務器
- 服務器會暴露在REST API模型(JSON)
有沒有自動化的方式通過http傳輸模型?我曾嘗試使用django.core.serializers但我有以下問題:
- 我不能序列在查詢集相關對象
- 遠程應用離不開本地數據庫
- 遠程應用程序搜索相關對象的工作在反序列化後的本地數據庫(即不存在)
編輯:
我設法序列化模式是這樣的:
books = Book.objects.prefetch_related('author').all()
authors = [book.author for book in books]
data = authors + list(books.all())
serialized_data = django.core.serializers.serialize("json", data)
我的問題是,遠程應用程序無法反序列化沒有本地數據庫。
爲什麼你需要沒有數據庫的模型?這沒有任何意義。只需創建REST API,以便服務器將對遠程應用程序進行查詢。爲什麼你不能將文件複製到遠程應用程序?曾聽說過倉庫? – freakish 2013-03-13 15:42:15
遠程計算機是否知道模型的結構?如果是這樣,你可以序列化模型中的*字段等,並通過它們。 – danodonovan 2013-03-13 15:42:57
遠程應用程序知道模型結構 – nkout 2013-03-13 15:54:38