我想用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)
有更优雅的方式吗?
我得到了一个原始的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) 我过去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)
这扩展了现有的集团.在name
与permissions
现场来自直接从集团模式.如果我创建一个新团队,也会添加一个团队.那很棒.
使用自定义save
方法,我还可以添加,user
列出的members
,将添加到创建的组中,并获得授予团队/组的权限.
现在我的问题是,该组的name
字段是唯一的 - 所以我无法为每个项目添加Admins -Team.
我考虑为前端添加另一个名称字段,并为Group-Model的名称字段生成唯一的字符串.但是嗯....对于多个自定义组有更好的解决方案吗?也许有人有个主意?先感谢您!
是否有 RoR 支持的数据库列表?我正在寻找 MongoDB 支持,但找不到任何官方信息。
我是一个 python/djangoist,不知道应该在 RoR 世界中搜索什么关键字。:(
我能找到的所有官方信息就是那份小清单:
目前,MySQL、PostgreSQL、SQLite、SQL Server、Sybase 和 Oracle(除 DB2 之外的所有受支持的数据库)均支持迁移。
这些都是吗?或者是否有一个我可以使用的 RoR 应用程序/插件/任何名称?
我正在寻找一种方法将$CI_COMMIT_TAG
我的内部传递.gitlab-ci.yml
给curl
带有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
正确的方式?
我是第一次使用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) 我点击像"请求"这样的面板时,我的Django-Debug-Toolbar会产生一个Http404.我多次检查了我的配置,但找不到什么错误.
版本:
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) 我想查询作为字符串的特定字段的模型。
演示:
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
我想在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) 我已经开始使用Go,并且正在尝试按照本教程进行操作。一切构建正确,但是当我尝试运行它时,出现了makeRouter()
找不到的错误。
我看了一些其他问题,例如this,并检查了文档,但是我找不到我的设置有什么问题。
.../wattagebazooka/
|- wattagebazooka.go
|- router.go
|- handler.go
Run Code Online (Sandbox Code Playgroud)
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)