我搜索过类似的主题但没有找到我需要的..
我用 UserAttributes 模型扩展了 Users 模型,添加了一些附加字段等等。现在我正在尝试使 ModelForm 出来。所以我在这里遇到了一些问题。
我想将组列为 ChoiceField 而不是 MultipleChoiceField。这是规范的要求,因此必须如此。
所以这是代码..
from django.forms import ModelForm
from django.contrib.auth.models import User
from helpdesk.models.userattributes import *
from django.utils.translation import ugettext as _
class SettingsOperatorsForm(ModelForm):
groups = forms.ChoiceField(
label=_(u'Rights'),
required=True,
choices=["what's in here?"]
)
class Meta:
model = UserAttributes
fields = ('first_name', 'last_name', 'job_title', 'email', 'password', 'is_active', 'groups' )
Run Code Online (Sandbox Code Playgroud)
数据库中有 auth_group 表,所以我尝试将其设置为这样,但我根本没有显示任何表单:
from django.contrib.auth.models import User, Group
groups = forms.ChoiceField(
label=_(u'Rights'),
required=True,
choices=Group.objects.all()
)
Run Code Online (Sandbox Code Playgroud)
我认为最好将 multipleChoiceField 转换为 ChoiceField
简单来说:

应该变成只是选择框。
有人可以证明为什么使用这样的解决方案是一个坏习惯:
在django中,98%的案例需要使用
from django.http import HttpResponseRedirect
from django.core.urlresolvers import reverse
from django.utils.translation import ugettext as _
Run Code Online (Sandbox Code Playgroud)
无论如何在我的项目中我的每个视图都有这些导入,并且几乎在视图的每个第二个函数中都使用了所有内容:
from datetime import datetime
from django.conf import settings
from django.contrib.auth.models import User
from django.core.urlresolvers import reverse
from django.core import paginator
from django.db import connection
from django.db.models import Q
from django.http import HttpResponseRedirect, Http404, HttpResponse
from django.shortcuts import render_to_response, get_object_or_404
from django.template import RequestContext
from django.utils.translation import ugettext as _
Run Code Online (Sandbox Code Playgroud)
现在添加一些模型和表单,我有50行废话,根本无法读取.
我头脑中的第一件事当然是提出更多观点,分割一些操作等等.但仍然有大约30行导入在代码中杀死了我的方向.
然后我决定将95%的时间内在视图中使用的所有内容放到目录/project/app/imports/view.py中.现在我有一些常见的东西,只有一个导入,但我的同事攻击我,这是非常难以阅读这种代码,因为你无法看到什么是导入,以及为什么这么难打开一个IDE中的更多选项卡.. ??? [特别是vim用户,他们有FRAMES,他正在使用vim]
我对模型做了同样的事情,我的模型有它自己的目录,因为它在那里超过50个,而且那些文件不小 - 每个约150行..即使这些文件内部的模型很少..所以我只是在做就像是 :
from myapp.models.mymodel import …Run Code Online (Sandbox Code Playgroud) 可能重复:
在Python中从字典创建或分配变量
你好
我们有这样的字典:
data = {'raw':'lores ipsum', 'code': 500}
Run Code Online (Sandbox Code Playgroud)
如何将此dict转换为字符串?结果必须是这样的:
print raw
print code
#output is
# lores ipsum
# 500
Run Code Online (Sandbox Code Playgroud)
编辑: 好的,所以我想要的是原始和代码变量可用..再举一个例子
data = {'raw':'lores ipsum', 'code': 500}
var1 = code
var2 = raw
Run Code Online (Sandbox Code Playgroud)
使用变量进行大量的字符串操作变得很困难,这就是dict,这是类方法...所以它的结果就是这样:self.data ['raw'] [0],这让我每次都写这个使"原始"变量更舒服......(想象一下,在每一行使用它来加入和格式化操作!!!)无论如何这个变量只能在这个方法中使用,所以这个解决方案没有副作用. .
编辑:删除,没有人理解我想要的
这是一个Makefile
roman@debian ~/D/O/devops> cat Makefile
install:
-cat projects.txt | xargs -n 2 bash -c 'git clone $0 $1'
Run Code Online (Sandbox Code Playgroud)
这是projects.txt
roman@debian ~/D/O/devops> cat projects.txt
git@github.com:xxx/xxx1.git app-xxx1
git@github.com:xxx/xxx2.git app-xxx2
Run Code Online (Sandbox Code Playgroud)
这是当我将此命令复制到bash时会发生什么 - 它的工作原理:
roman@debian ~/D/O/devops> cat projects.txt | xargs -n 2 bash -c 'git clone $0 $1'
fatal: destination path 'app-xxx1' already exists and is not an empty directory.
Run Code Online (Sandbox Code Playgroud)
它正确使用git clone它只是repo存在.
现在,当您执行make install此操作失败时,所有变量都为空:
roman@debian ~/D/O/devops> make install
cat projects.txt | xargs -n 2 bash -c 'git clone '
You must specify …Run Code Online (Sandbox Code Playgroud) 在下面查看此Makefile。
compose:
docker-compose up myapp
compose-shell:
docker-compose run myapp /bin/bash
compose-shellplus:
docker-compose run myapp make shell
compose-test:
docker-compose run myapp make test
compose-migrate:
docker-compose run myapp make migrate
compose-load:
docker-compose run myapp make load
compose-export:
docker-compose run myapp make export
compose-flush:
docker-compose run myapp make flush
# run tests
test:
python manage.py test --settings=$(PROJECT_SETTINGS)
# install depedencies (and virtualenv for linux)
install:
ifndef WIN
-virtualenv -p python3 .venv
endif
pip install -r requirements.txt
# handle django migrations
migrate:
python manage.py …Run Code Online (Sandbox Code Playgroud)