小编Dmi*_*nik的帖子

查询DynamoDB中的大小限制

我没有在DynamoDb中获得查询/扫描限制的概念.根据文件:

单个Query操作最多可以检索1 MB的数据.在将任何FilterExpression应用于结果之前,此限制适用.

假设我有10k项,每项250kb,所有这些都适合查询参数.

  1. 如果我运行一个简单的查询,我只得到4项?
  2. 如果我使用ProjectionExpression只检索单个属性(大小为1kb),我会获得1k项吗?
  3. 如果我只需要计算项目(选择:'COUNT'),它会计算所有项目(10k)吗?

amazon-dynamodb

7
推荐指数
1
解决办法
7791
查看次数

unique_for_date 的使用

我正在尝试使用 unique_for_date 选项来防止在同一日期使用相同的 slug 创建多个帖子。但它似乎根本不起作用:我仍然可以从 shell 和管理仪表板使用相同的 slug 创建帖子。ModelForm 也是如此。我的models.py:

class Post(models.Model):

    STATUS_CHOICES = (
        ('draft', 'Draft'),
        ('published', 'Published'),
        ('suspended', 'Suspended'),
    )

    title = models.CharField(max_length=200)
    slug = models.SlugField(max_length=200, unique_for_date='created')
    status = models.CharField(max_length=15,
                              choices=STATUS_CHOICES,
                              default='draft')
    content = models.TextField(max_length=200000, blank=True)
    # dates
    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)
    publish = models.DateTimeField(default=timezone.now)
Run Code Online (Sandbox Code Playgroud)

我通过更改auto_now_add=True为找到了某种解决问题的方法,default=timezone.now但它仅在通过 django admin 创建对象时显示错误 - 从 shell 或表单创建对象时仍然没有错误。

更新:我知道使用 auto_now_add 设置 editable=False 会导致 django 跳过字段验证,但它并没有解释为什么即使使用default=timezone.now

更新 2:出于某种原因,unique_for_date 仅适用于 django-admin 仪表板表单(至少在我的情况下)。为了对其他表单获得相同的效果,我覆盖了模型的 clean_fields 方法(强制 django 验证唯一字段): …

python django django-models

6
推荐指数
1
解决办法
2590
查看次数

如何在 Django 中存储第三方应用程序迁移

我对 python 和 django 相当陌生,并试图基于 django-scheduler 包构建一个简单的日历。根据 django-scheduler 文档,自定义基类可用于添加其他字段、管理器等。

所以,我使用了一个抽象模型来添加一个新字段:

#myproject/customer_calendar/models.py
from django.db import models
from main.models import Customer

class CalendarAbstract(models.Model):
    customer = models.OneToOneField(to=Customer, null=True, blank=True, related_name='calendar')

    class Meta:
        abstract = True
Run Code Online (Sandbox Code Playgroud)

并将其添加到 settings.py

SCHEDULER_BASE_CLASSES = {
    'Calendar': ['customer_calendar.models.CalendarAbstract'],
}
Run Code Online (Sandbox Code Playgroud)

现在,如果我使用 makemigrations 命令,则会在调度程序应用程序(位于当前虚拟环境的站点包中)内创建一个新的迁移,这不允许我通过 VCS 跟踪迁移。

我找到了几个解决方案:

1)将整个调度程序应用程序保留在我的项目中。根据 SO,这被认为是一种不好的做法,应始终通过 pip 检索第三方应用程序。

2) 使用 django 设置将所有 django-scheduler 迁移存储在我的日历应用程序中

MIGRATION_MODULES = {
    'schedule': 'customer_calendar.migrations',
}
Run Code Online (Sandbox Code Playgroud)

第二个对我来说看起来不错,但我不知道它是否被认为是解决这个问题的有效方法。还有其他方法可以存储第三方应用程序迁移吗?

django django-migrations django-scheduler

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

按下按钮打开SideMenu

我目前正在尝试从V1升级到react-native-navigation V2,并试图找到一种方法来切换顶部栏按钮按下的侧面菜单.

我的应用程序开始

Navigation.setRoot({
        root: {
          sideMenu: {
            left: {
              component: {
                name: 'testApp.SideDrawer',
                passProps: {
                  text: 'This is a left side menu screen'
                }
              }
            },
            center: {
              bottomTabs: {
                ...
              }
            },
          },
        },

      });
Run Code Online (Sandbox Code Playgroud)

有没有办法在当前版本中执行此操作?

react-native-navigation react-native-navigation-v2

2
推荐指数
1
解决办法
3671
查看次数