我有一个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