gpt4 book ai didi

python - Django + PostgreSQL + DjangoRestFramework

转载 作者:行者123 更新时间:2023-11-29 13:27:04 24 4
gpt4 key购买 nike

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

描述任务序列化器:

from db.admin.db import Staff
from rest_framework import serializers

class TaskSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Staff

但是运行的时候出现错误:

type object 'Staff' has no attribute '_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

最佳答案

Django REST Framework 仅支持带有 ModelSerializer 的 Django ORM。由于您使用的是 SQAlchemy,因此您将无法使用其中的任何优点。

DEPRECATED(请参阅下面的新建议)- 有一个库试图将对 SQAlchemy 的支持添加到 DRF - DjangoREST Alchemy .完全披露——我认识作者,他是同事。然而,它只执行只读操作,因此它不支持 DRF 支持 Django ORM 的所有功能。非常欢迎您提出问题和/或做出贡献!

编辑 04/19 - DjangoREST Alchemy 已弃用。建议看一下 django-sorcerydjango-rest-witchcraft .它们实现了更好的 DRF 集成,同时让您感觉就像在使用 Django ORM。

关于python - Django + PostgreSQL + DjangoRestFramework,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31821612/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com