小编Tho*_*rzl的帖子

如何使用Django进行"批量更新"?

我想用Django更新一个表 - 在原始SQL中是这样的:

update tbl_name set name = 'foo' where name = 'bar'
Run Code Online (Sandbox Code Playgroud)

我的第一个结果是这样的 - 但这很讨厌,不是吗?

list = ModelClass.objects.filter(name = 'bar')
for obj in list:
    obj.name = 'foo'
    obj.save()
Run Code Online (Sandbox Code Playgroud)

有更优雅的方式吗?

django django-models

133
推荐指数
6
解决办法
10万
查看次数

原始查询必须包含主键

我得到了一个原始的SQL语句 views.py

Message.objects.raw('''
        SELECT s1.ID, s1.CHARACTER_ID, MAX(s1.MESSAGE) MESSAGE, MAX(s1.c) occurrences
        FROM
           (SELECT ID, CHARACTER_ID, MESSAGE, COUNT(*) c
            FROM tbl_message WHERE ts > DATE_SUB(NOW(), INTERVAL %s DAY) GROUP BY CHARACTER_ID,MESSAGE) s1
        LEFT JOIN
           (SELECT ID, CHARACTER_ID, MESSAGE, COUNT(*) c
            FROM tbl_message WHERE ts > DATE_SUB(NOW(), INTERVAL %s DAY) GROUP BY CHARACTER_ID,MESSAGE) s2
          ON s1.CHARACTER_ID=s2.CHARACTER_ID
         AND s1.c < s2.c
        WHERE s2.c IS NULL
        GROUP BY CHARACTER_ID
        ORDER BY occurrences DESC''', [days, days])
Run Code Online (Sandbox Code Playgroud)

此SQL语句的结果(直接在数据库上测试)是:

ID  | CHARACTER_ID | MESSAGE | OCCURENCES
----+--------------+---------+--------------
148 …
Run Code Online (Sandbox Code Playgroud)

django django-models

13
推荐指数
3
解决办法
2万
查看次数

扩展django组和权限

我过去3天一直在搜索谷歌和Stackoverflow,但找不到类似的东西.我想扩展或使用django组和权限.

假设我们有一些项目与不同的团队和用户.

class Project(models.Model):
    owner = models.ForeignKey(User)
    name = models.CharField(max_length=100)

class Team(models.Model):
    project = models.ForeignKey(Project)
    members = models.ManyToManyField(User)
    name = models.CharField(max_length=100)
    permission = models.ManyToManyField(Permission)
Run Code Online (Sandbox Code Playgroud)

现在 - 一切都很好.现在我想要的是扩展django提供的现有Auth.Group,这样我就可以request.user.has_perm...直接使用了.

那么,让我们将团队模型改为

class Team(Group):
    project = models.ForeignKey(Project)
    members = models.ManyToManyField(User)
Run Code Online (Sandbox Code Playgroud)

这扩展了现有的集团.在namepermissions现场来自直接从集团模式.如果我创建一个新团队,也会添加一个团队.那很棒.

使用自定义save方法,我还可以添加,user列出的members,将添加到创建的组中,并获得授予团队/组的权限.

现在我的问题是,该name字段是唯一的 - 所以我无法为每个项目添加Admins -Team.

我考虑为前端添加另一个名称字段,并为Group-Model的名称字段生成唯一的字符串.但是嗯....对于多个自定义组有更好的解决方案吗?也许有人有个主意?先感谢您!

django django-models django-permissions

9
推荐指数
1
解决办法
4519
查看次数

支持的数据库列表?

是否有 RoR 支持的数据库列表?我正在寻找 MongoDB 支持,但找不到任何官方信息。

我是一个 python/djangoist,不知道应该在 RoR 世界中搜索什么关键字。:(

我能找到的所有官方信息就是那份小清单

目前,MySQL、PostgreSQL、SQLite、SQL Server、Sybase 和 Oracle(除 DB2 之外的所有受支持的数据库)均支持迁移。

这些都是吗?或者是否有一个我可以使用的 RoR 应用程序/插件/任何名称?

ruby-on-rails

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

如何使用json输入在多行脚本中传递GitLab变量?

我正在寻找一种方法将$CI_COMMIT_TAG我的内部传递.gitlab-ci.ymlcurl带有json数据的多行命令.但每次我这样做,我得到变量键字符串而不是值.

production:
  stage: deploy
  script:
    - "openssl aes-256-cbc -k $DEPLOY_KEY -in config/deploy_id_rsa_enc_gitlab -d -a -out config/deploy_id_rsa"
    - chmod 600 config/deploy_id_rsa
    - eval `ssh-agent -s`
    - ssh-add config/deploy_id_rsa
    - ssh-keyscan -H $HOST_PRODUCTION >> ~/.ssh/known_hosts
    - bundle exec cap production deploy tag=$CI_COMMIT_TAG
    - "curl --request POST -u $GRAFANA_USR:$GRAFANA_PWD \
      --url https://stats.domain.mil/grafana/api/annotations/graphite \
      --header 'content-type: application/json' \
      --data '{\"what\": \"Deploy: CORE\",\"tags\": [\"production_release\"],\"data\": \"$CI_COMMIT_TAG\"}'"
  environment:
    name: production
    url: https://$HOST_PRODUCTION
  only:
    - tags
  when: manual
Run Code Online (Sandbox Code Playgroud)

我如何通过$CI_COMMIT_TAG正确的方式?

gitlab gitlab-ci

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

Spyne / RPClib-如何响应ComplexModel?

我是第一次使用SPYNE,对于如何使用ComplexModel做出响应我有些困惑。

#service.py
class Status(ComplexModel):
    statusCode = Integer
    statusMsg = String

class ResponseData(ComplexModel):
    status = Array(Status)
    version = Integer

class SoapService(ServiceBase):
    @rpc(String, _returns=ResponseData)
    def doSomething(ctx, name):
        # ...
        # do something to get a django-model-object
        obj_data = Servers.objects.get(host=name)
        # put vars from the django-model-object into 'ResponseData' and nested 'Status'
        # e.g. statusCode = 1, statusMsg = 'online', version = 1

        """ experimental - status is not returned - version is 1:
        obj_status = Status()
        obj_status.statusCode = 1
        obj_status.statusMsg = …
Run Code Online (Sandbox Code Playgroud)

python django soap wsdl xmlrpclib

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

Django调试工具栏在面板上显示404

我点击像"请求"这样的面板时,我的Django-Debug-Toolbar会产生一个Http404.我多次检查了我的配置,但找不到什么错误.

版本:

  • django-debug-toolbar == 1.8
  • django == 1.11.1

settings.py

# DEBUG TOOLBAR

if DEBUG:

    def custom_show_toolbar(request):
        """ Only show the debug toolbar to users with the superuser flag. """
        #return request.user.is_superuser
        if request.is_ajax():
            return False
        return True

    MIDDLEWARE += (
        'debug_toolbar.middleware.DebugToolbarMiddleware',
    )
    INSTALLED_APPS += (
        'debug_toolbar',
    )
    INTERNAL_IPS = ('127.0.0.1', )
    DEBUG_TOOLBAR_CONFIG = {
        'INTERCEPT_REDIRECTS': False,
        'SHOW_TOOLBAR_CALLBACK': 'core.settings.custom_show_toolbar',
        'HIDE_DJANGO_SQL': True,
        'TAG': 'body',
        'SHOW_TEMPLATE_CONTEXT': True,
        'ENABLE_STACKTRACES': True,
    }
Run Code Online (Sandbox Code Playgroud)

urls.py

urlpatterns = [
    url(r'^$', core_views.home, name='home'),
    #url(r'^login/$', auth_views.login, name='login'),
    #url(r'^logout/$', auth_views.logout, name='logout'), …
Run Code Online (Sandbox Code Playgroud)

django django-debug-toolbar

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

查询字段作为字符串?

我想查询作为字符串的特定字段的模型。

演示:

class Foo(models.Model):
    someones_name = models.CharField(max_length=100)
    anothers_name = models.CharField(max_length=100)

# python shell:
>> Foo.objects.get(pk=1).someones_name
u'Cpt. Hook'
>> Foo.objects.get(pk=1).anothers_name
u'Peter Pan'
Run Code Online (Sandbox Code Playgroud)

现在 - 我在一个变量中输入了字段的名称 someones_name

>> field_name = 'someones_name'
Run Code Online (Sandbox Code Playgroud)

那么,如何使用该 field_name 变量对 Foo-Model 执行几乎相同的查询?如果真的有这种可能吗?


编辑

我不想用那个 field_name 进行查询。我想要 field_name 中给出的字段的确切值。我知道我可以做这样的事情

query = Foo.objects.get(pk=1)
query.someones_name
query.anothers_name
Run Code Online (Sandbox Code Playgroud)

我所需要的只是获取我从._meta.fields(从另一个模型)动态接收的这个特定字段作为字符串。

在 RAW-SQL 中,类似于: 'SELECT %s FROM foo where pk = 1' % field_name

django django-models django-queryset

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

多维列表/字典/什么?

我想在Python中创建一个多维数组,以便稍后解析它.我是PHP的转换器,所以我对如何创建一个字典或列表或其他任何东西来解决这个问题.有人有想法吗?

for group, value in data:
    print '%s = %s' % (group, value)
    for member, value in group:
        print '   MEMBER: %s = %s' % (member, value)

>> 'Windows = 12%'
>> '   MEMBER: pc1 = 123'
>> '   MEMBER: pc2 = 321'
>> 'MacOS = 11%'
>> 'Linux = 13%'
>> '   MEMBER: pc3 = 213'
>> '   MEMBER: pc4 = 132'
>> ...
Run Code Online (Sandbox Code Playgroud)

python dictionary list arraylist multidimensional-array

0
推荐指数
1
解决办法
864
查看次数

转:同一包中的未定义函数

我已经开始使用Go,并且正在尝试按照本教程进行操作。一切构建正确,但是当我尝试运行它时,出现了makeRouter()找不到的错误。

我看了一些其他问题,例如this,并检查了文档,但是我找不到我的设置有什么问题。

我的文件夹结构:

.../wattagebazooka/
  |- wattagebazooka.go
  |- router.go
  |- handler.go
Run Code Online (Sandbox Code Playgroud)

wattagebazooka.go
package main

import (
    "database/sql"
    "fmt"
    "log"
    "net/http"
    "runtime"

    _ "github.com/lib/pq"
)

// init sets runtime settings.
func init() {
    // Verbose logging with file name and line number
    log.SetFlags(log.Lshortfile)

    // Use all CPU cores
    runtime.GOMAXPROCS(runtime.NumCPU())
}

var db *sql.DB

func main() {
    db = openDB()
    defer db.Close()

    r := makeRouter()
    http.Handle("/", r)
}

func openDB() *sql.DB {
    dbName := "wattagebazooka"

    db, …
Run Code Online (Sandbox Code Playgroud)

go

0
推荐指数
1
解决办法
2339
查看次数