我正在尝试在Django中创建一个枚举字段,在GET请求时将返回枚举的文本表示,并在POST或PATCH请求时将文本表示转换为相应的整数,然后保存.
该
transform_<field>()
Run Code Online (Sandbox Code Playgroud)
方法可以很好地将整数枚举值转换为相应的字符串,但我无法找到一种更好的方法将字符串转换为相应的整数而不是黑客攻击
validate_<field>()
Run Code Online (Sandbox Code Playgroud)
方法.
有没有更好的方法呢?请参阅下面的代码
模型文件
class Status(enum.Enum):
RUNNING = 0
COMPLETED = 1
labels = {
RUNNING: 'Running',
COMPLETED: 'Completed'
}
translation = {v: k for k, v in labels.iteritems()}
class Job(models.Model):
status = enum.EnumField(Status)
Run Code Online (Sandbox Code Playgroud)
串行
class JobSeralizer(serializers.ModelSerailzer):
status = seralizers.CharField(max_length=32, default=Status.QUEUED)
def transform_status(self, obj, value):
return JobStatus.labels[value]
def validate_status(self, attrs, source):
"""Allow status to take numeric or character representation of status
"""
status = attrs[source]
if status in JobStatus.translation:
attrs[source] = JobStatus.translation[status]
elif status.isdigit(): …Run Code Online (Sandbox Code Playgroud) 我正在考虑开始将 Apache Airflow 用于一个项目,并且想知道人们如何使用气流管理持续集成和依赖关系。更具体地说说我有以下设置
3 Airflow 服务器:开发阶段和生产。
我有两个 python DAG,我想将其源代码保存在单独的存储库中。DAG 本身很简单,基本上只是使用 Python 运算符来调用 main(*args, **kwargs)。然而,由 main 运行的实际代码非常大并且延伸了几个文件/模块。例如,每个 python 代码库都有不同的依赖项,
Dag1 使用 Python2.7 pandas==0.18.1, requests=2.13.0
Dag2 使用 Python3.6 pandas==0.20.0 和 Numba==0.27 以及一些需要编译的 cythonized 代码
如何管理运行这两个具有完全不同依赖关系的 Dag 的 Airflow?另外,我如何管理将这两个 Dag 的代码持续集成到每个不同的气流环境(开发、登台、生产)中(我是否只是获取 jenkins 或其他东西以通过 ssh 连接到气流服务器并执行诸如 git pull origin BRANCH 之类的操作) )
希望这个问题不会太模糊,人们会看到我遇到的问题。
我最近开始在Dask寻找大数据。我对有效并行应用操作有疑问。
说我有一些这样的销售数据:
customerKey产品Key交易Key总销售净销售额单位销售量交易日期
----------- -------------- ---------------- --------- --------- ---------- ------ --------------------
20353 189 219548 0.921058 0.921058 1 1 2017-02-01 00:00:00
2596618 189 215015 0.709997 0.709997 1 1 2017-02-01 00:00:00
30339435 189 215184 0.918068 0.918068 1 1 2017-02-01 00:00:00
32714675 189 216656 0.751007 0.751007 1 1 2017-02-01 00:00:00
39232537 189 218180 0.752392 0.752392 1 1 2017-02-01 00:00:00
41722826 189 216806 0.0160143 0.0160143 1 1 2017-02-01 00:00:00
46525123 189 219875 0.469437 0.469437 1 1 2017-02-01 00:00:00
51024667 189 215457 0.244886 0.244886 1 … 给定以下系统
# Models
class Team(models.Model):
name = models.CharField(max_length=128)
class Player(models.Model):
name = models.CharField(max_length=128)
teams = models.ManyToManyField(Team)
# Serializers
class PlayerSerializer(serializers.ModelSerializer):
teams = serializers.PrimaryKeyRelatedField(many=True, queryset=League.objects.all(), required=False)
class Meta:
model = Team
fields = ('id', 'name', 'teams')
# Views
class TeamViewSet(viewsets.ModelViewSet):
queryset = Team.objects.all()
serializer_class = TeamSerializer
Run Code Online (Sandbox Code Playgroud)
基本上一个球员可以在很多球队
所以问题是,如何实现端点来管理玩家与团队的关系。假设我们有两支 id 为 1 和 2 的球队,我创建了一个球员
POST /players/ {'name': 'player1'} 该玩家的 ID 为 1
我想将玩家添加到团队 1 和 2,然后从团队 2 中删除玩家
通过此设置,我可以执行 PATCH /players/1/ {'teams': [1, 2]}
我现在如何从团队 2 中删除玩家 1?
另外,使用补丁请求将玩家 1 添加到团队 …