小编dam*_*mon的帖子

Django外键访问save()函数

这是我的代码:

class Publisher(models.Model):
    name = models.CharField(
            max_length = 200,
            unique = True,
    )

    url = models.URLField()

    def __unicode__(self):
        return self.name

    def save(self):
        pass

class Item(models.Model):
    publisher = models.ForeignKey(Publisher)

    name = models.CharField(
            max_length = 200,
    )

    code = models.CharField(
            max_length = 10,
    )

    def __unicode__(self):
        return self.name
Run Code Online (Sandbox Code Playgroud)

我希望能够从Publisher保存功能访问每个项目.我怎样才能做到这一点?

例如,我想在发布者的保存下将文本附加到与此发布者关联的每个项目的"代码"字段中.

编辑:当我尝试实现第一个解决方案时,我收到错误"'Publisher'对象没有属性'item_set'".显然我无法以这种方式访问​​它.还有其他线索吗?

编辑2:我发现发生的问题是,当我创建一个新的Publisher对象时,我添加内联项.因此,在尝试保存发布者并访问项目时,它们不存在.

有没有办法解决?!

python django django-models

5
推荐指数
1
解决办法
6198
查看次数

在Django我有一个复杂的查询,我只需要通过外键的唯一值,这可能吗?

我有以下型号:

class Indicator(models.Model):
    name = models.CharField(max_length=200)
    category = models.ForeignKey(IndicatorCategory)
    weight = models.IntegerField()
    industry = models.ForeignKey(Industry)

    def __unicode__(self):
        return self.name
    class Meta:
        ordering = ('name',)

class IndicatorRatingOption(models.Model):
    indicator = models.ForeignKey(Indicator)
    description = models.TextField()
    value = models.FloatField(null=True)

    def __unicode__(self):
        return self.description

class Rating(models.Model):
    product = models.ForeignKey(Product, null=True)
    company = models.ForeignKey(Company, null=True)
    rating_option = models.ForeignKey(IndicatorRatingOption)
    value = models.IntegerField(null=True)
Run Code Online (Sandbox Code Playgroud)

我需要做的是获得两家公司的所有公司评级选项,而不会在指标(rating.rating_option.indicator)上重叠.如果存在冲突,公司'a'将永远战胜公司'b'.我该怎么做呢?

python django django-models

5
推荐指数
1
解决办法
1984
查看次数

Django 如何使用 TinyIntegerField 或 SmallIntegerField 作为主键?

我想创建一个应呈现给用户的选项少于 255 个的表,并使用 1 字节的整数作为主键。类似下面的代码,但如果可以创建的话,最好使用 TinyIntegerField。

class Category(models.Model):
    id = models.SmallIntegerField(auto_increment=True, primary_key=True)
    category = models.CharField(max_length=254, unique=True)

class Test(models.Model):
    category = models.ForeignKey(Category)
Run Code Online (Sandbox Code Playgroud)
  1. 我假设 Django 中没有 TinyInteger,因为 Postgres 中没有 TinyInteger。为什么Postgres中没有tinyint?

  2. 在Django文档中,唯一的自动增量是一个AutoField,如何将自动增量应用于a SmallIntegerField

django postgresql django-models

5
推荐指数
1
解决办法
9870
查看次数

如何组合django"prefetch_related"和"values"方法?

如何在组合中应用"prefetch_related"和"values"方法?

以前,我有以下代码.优化性能需要限制此查询中的字段.

Organizations.objects.values('id','name').order_by('name')
Run Code Online (Sandbox Code Playgroud)

现在,我需要预取其关联并使用"prefetch_related"方法将其附加到序列化程序中.

Organizations.objects.prefetch_related('locations').order_by('name')
Run Code Online (Sandbox Code Playgroud)

在这里,我似乎找不到使用"prefetch_related"后限制字段的方法.

我尝试过以下操作,但是这样做时序列化程序没有看到相关的"位置".

Organizations.objects.prefetch_related('locations').values("id", "name").order_by('name')
Run Code Online (Sandbox Code Playgroud)

模型骨架:

class Organizations(models.Model):
    name = models.CharField(max_length=40)

class Location(models.Model):
    name = models.CharField(max_length=50)
    organization = models.ForeignKey(Organizations, to_field="name", db_column="organization_name", related_name='locations')

    class Meta:
        db_table = u'locations'
Run Code Online (Sandbox Code Playgroud)

python django

5
推荐指数
1
解决办法
2541
查看次数

ZSH:用反斜杠转义或引用字符串

我编写了一个小函数,将 Windows 路径“转换”为 OSX 路径并在 Finder 中打开它。该函数可以与 bash 完美配合,但不能与 zsh 配合使用(我使用 oh-my-zsh)。

问题是它解析特定的反斜杠组合,例如:\f\a\01\02\03等......

例如,此路径字符串是输入:

"\60_Project\6038_Projekt_Part\05_development\assets\img\facebook"
Run Code Online (Sandbox Code Playgroud)

在翻译函数之后,\f序列(来自img\facebook)被错误地翻译为空格,产生输出:

"/60_Project/6038_Project_Part_developmentssets/img
                                                                                   acebook"
Run Code Online (Sandbox Code Playgroud)

我的目标是只粘贴 Windows 路径,而不必手动更改任何内容。

如何使用 zsh 转义或引用字符串以获得我想要的结果?

这是我写的代码:

"\60_Project\6038_Projekt_Part\05_development\assets\img\facebook"
Run Code Online (Sandbox Code Playgroud)

用法:

"/60_Project/6038_Project_Part_developmentssets/img
                                                                                   acebook"
Run Code Online (Sandbox Code Playgroud)

结果应该是 Finder 打开:

/Volumes/myvolume/60_Project/6038_Project_Part/05_development/assets/img/facebook
Run Code Online (Sandbox Code Playgroud)

macos zsh zshrc oh-my-zsh

5
推荐指数
1
解决办法
1万
查看次数

我需要将 .env 文件提交到存储库中吗?

我刚刚开始使用 django 学习后端开发。我的问题是我是只提交服务器文件夹中的项目文件,还是应该将.env文件夹提交到存储库?

我做了以下工作:

  1. 我已经创建了虚拟环境,并且还在 venv 中安装了 django。
  2. 我已经设置了 django 服务器和超级管理员。
  3. 我已经设置了config.json保护我的 API 密钥。
  4. 中包含相同的内容.gitignore

如果我提交或不提交会.env怎样?

python git virtualenv

5
推荐指数
2
解决办法
6947
查看次数

Redis Cluster,如何并行迭代大量键

我正在尝试通过 python 修改大型 Redis 集群中的值StrictRedisCluster,并且我正在尝试并行迭代键。

到目前为止我已经尝试过

  1. keys()超时的命令
  2. scan()/scan_iter()在单个线程中遍历值,这太慢了

有没有办法在线程中按块进行扫描?也许扫描集群的每个节点,或者每个键空间?我注意到一个 CLI 命令GETKEYSINSLOT,但它在 python Redis 中不可用。

我所有的密钥都是字符串 UUID 格式

python redis stackexchange.redis redis-cluster

5
推荐指数
0
解决办法
620
查看次数

使用 IAM 角色从 EC2 使用 curl 从 S3 检索文件

我创建了一个 IAM 角色并将其分配给我的 EC2 实例。我创建了一个 IAM 角色策略并将其链接到我的 S3 存储桶。我现在可以使用aws-cliEC2 实例上的列出我的 S3 存储桶中的文件。

[root@ec2.hostname.aws.com ~]# aws --region eu-west-1 s3 ls s3://s3-bucket-name
2017-05-02 02:37:39        137 index.html
Run Code Online (Sandbox Code Playgroud)

现在,如果我尝试访问curl该文件,则会收到拒绝访问错误:

[root@ec2.hostname.aws.com ~]# curl https://s3-eu-west-1.amazonaws.com/s3-bucket-name/index.html
<?xml version="1.0" encoding="UTF-8"?>
<Error><Code>AccessDenied</Code><Message>Access Denied</Message><RequestId>782176F442A4995A</RequestId><HostId>qZWZTXZdlgtD4BiVYfp5+Mj/gU3UXRiYQmsSyaAhwED1JtzUWs9QKE99RmsQ6w0uDB
Run Code Online (Sandbox Code Playgroud)

有没有一种方法可以让这个curl请求工作而不放宽 S3 存储桶的权限?诸如身份验证、标头等之类的东西。

amazon-s3 amazon-ec2 amazon-web-services

4
推荐指数
1
解决办法
6277
查看次数

对于某些库版本,在 python“requirements.txt”中使用时“"&gt;=”和“~=”有什么区别?

对于某些库,在pythonrequirements.txt中使用>=和时有什么区别?例如和~=requests >= 2.18.0requests ~= 2.18.0

我已经尝试过这两种方法并且工作正常

requests >= 2.18.0
requests ~= 2.18.0
Run Code Online (Sandbox Code Playgroud)

谁能解释一下>=~=运算符之间的确切区别吗?

python pip requirements.txt

4
推荐指数
1
解决办法
8680
查看次数

在 AWS ECS 上使用 docker-compose 进行 Continuos Deploy 的最佳实践

我是 ECS 新手,对于如何使用docker-compose包含多个服务的文件自动在 AWS ECS Fargate 中进行部署,我有些困惑。

我能够通过以下步骤执行从 git Push 到部署单个容器的端到端:

  1. 创建 AWS ECR
  2. 标记 docker 镜像
  3. 创建代码提交
  4. 创建代码构建
  5. 创建代码部署
  6. 创建带有任务描述的集群
  7. 创建管道以连接之前的所有内容并自动化直到最后。
  8. 完毕

但是当您拥有多项服务时会发生什么?

  1. 我是否需要修改该docker-compose文件才能兼容 ECS?如果是这样,如果整个项目都在一个文件夹中(pydanny cookiecutter 结构),我如何分离存储库?
  2. 我是否必须为我的每项服务创建一个 ECR 存储库docker-compose
  3. 自动化每个 ECR 的标记和推送以及各自的部署以实现完整的端到端流程的步骤是什么?
  4. 如何修改docker-composeECS 上的卷?

我使用pydanny cookiecutter生成的以下 docker-compose 文件,它有 7 个服务:

Django+ Postgres+ Redis+ Celery+ Celeryworker+ Celerybeat+Flower

docker-compose.yml

version: '3'

volumes:
  local_postgres_data: {}
  local_postgres_data_backups: {}

services:
  django: &django
    build:
      context: .
      dockerfile: …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services amazon-ecs docker docker-compose

4
推荐指数
1
解决办法
2893
查看次数