我发现PostgreSQL有一个模型框架:
from sqlalchemy import Column, Integer, String
from sqlalchemy.orm import column_property
from ..base import Base
class Staff(Base):
__tablename__ = 'account'
id = Column(Integer, primary_key=True)
name = column_property(Column(String(30), nullable=False))
surname = column_property(Column(String(30)))
otch = column_property(Column(String(30), nullable=False))
b_date = column_property(Column(String(30)))
pol = column_property(Column(String(3), nullable=False))
email = column_property(Column(String(100)))
gruppa = column_property(Column(String(30), nullable=False))
fak = column_property(Column(String(30)))
profile = column_property(Column(String(30), nullable=False))
有一种观点认为,通过序列化者必须提供详细信息:
if request.method == 'GET':
session = request.sa_session
h = session.query(Staff).all()
for i in h:
print i.name
serializer = TaskSerializer(h, many=True)
return Response(serializer.data)
说明TaskSerializer:
from db.admin.db import Staff
from rest_framework import serializers
class TaskSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Staff
但是当你跑步时,有一个错误:
类型对象'Staff'没有属性'_meta'
这个笑话是,如果模型是通过Model.model
构建的:
from django.db import models
class Staff(models.Model):
name = models.CharField(max_length=30)
surname = models.CharField(max_length=30)
otch = models.CharField(max_length=30)
b_date = models.CharField(max_length=30)
pol = models.CharField(max_length=3)
email = models.CharField(max_length=100)
gruppa = models.CharField(max_length=30)
fak = models.CharField(max_length=30)
profile = models.CharField(max_length=30)
一切正常。
是否可以使用SQLAlchemy模型或仅使用Django的models.Model
?
答案 0 :(得分:1)
Django REST Framework仅支持Django ORM及其ModelSerializer
。由于您使用的是SQAlchemy,您将无法使用任何这种优点。
DEPRECATED (有关新建议,请参见下文) - 有一个图书馆试图将对SQAlchemy的支持添加到DRF - DjangoREST Alchemy。完全披露 - 我知道作者是同事。但它只执行只读操作,因此它不支持DRF支持Django ORM的所有功能。不过,欢迎您发表问题和/或做出贡献!
编辑04/19 - DjangoREST Alchemy已被弃用。建议您查看django-sorcery或django-rest-witchcraft。它们实现了更好的DRF集成,同时让您感觉就像使用Django ORM一样。