我从数据库中获得了用于列出客户的表格。
class CustomerForm(forms.Form):
customer = forms.ChoiceField(choices=[], required=True, label='Customer')
def __init__(self, *args, **kwargs):
super(CustomerForm, self).__init__(*args, **kwargs)
self.fields['customer'] = forms.ChoiceField(choices=[(addcustomer.company_name + ';' + addcustomer.address + ';' + addcustomer.country + ';' + addcustomer.zip + ';' + addcustomer.state_province + ';' + addcustomer.city,
addcustomer.company_name + ' ' + addcustomer.address + ' ' + addcustomer.country + ' ' + addcustomer.zip + ' ' + addcustomer.state_province + ' ' + addcustomer.city) for addcustomer in customers])
Run Code Online (Sandbox Code Playgroud)
接下来,我得到一个模态窗口,里面有一个“添加客户”表单。
问题:当我通过模式表单将新客户插入数据库(实际上正在运行)时,在重新启动本地服务器之前,CustomerForm不会是它的选择。
我需要一种在添加客户后尽快更新列表的方法。尝试过这种__init__方法,但没有运气。
我正在尝试更新我的模型,所以当通过管理员检查BooleanField时,它会更新所有其他行以重置为False(0).但是当我继续这样做时,它只返回以下TypeError:'bool'对象不可迭代
这是我的模型:
class Contact(models.Model):
name = models.CharField(max_length=255)
telephone = models.CharField(max_length=255,blank=True)
email = models.CharField(max_length=255,blank=True)
primary_contact = models.BooleanField('Primary Contact')
def __unicode__(self):
return self.name
def make_primary(self):
Contact.objects.filter(id!=self.id).update(primary_contact=False)
def save(self, *args, **kwargs):
if (self.primary_contact == True):
self.make_primary()
super(Contact, self).save(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用名为make_primary()的自定义方法在save()期间更新我的行.感觉就像我需要做的事情一样超级简单明了.我是Django的新手,所以这是一个学习曲线.
任何帮助和建议将不胜感激.
谢谢 :)
编辑:
这里要求的是我的追溯/错误如下.此外,我更新了我的代码以使用exclude而错误已更改为:'long'对象不可迭代
Environment:
Request Method: POST
Request URL: http://localhost:8000/admin/contact/contact/1/
Django Version: 1.8.2
Python Version: 2.7.6
Installed Applications:
('grappelli',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'tinymce',
'adminsortable',
'taggit',
'contact')
Installed Middleware:
('django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.security.SecurityMiddleware')
Traceback:
File …Run Code Online (Sandbox Code Playgroud) 我使用AbstractBaseUser,并UserCreationForm与我的Django应用程序。通过我的应用程序注册用户时,密码以哈希格式保存并保存在数据库中。但是当我尝试使用 Django 管理站点做同样的事情时,密码以原始格式保存。
如何将字符串转换为表单?
在模型中你可以只使用这条线。
model = apps.get_model(app_label='app_label', model_name='str_model')
Run Code Online (Sandbox Code Playgroud)
我有 3 种形式,即:
并愿意这样做。
type = "customer"
form = "Fund_"+type #that would make "Fund_customer"
form = apps.get_form(form) #I wonder if there's a function like this.
Run Code Online (Sandbox Code Playgroud)
我只是不想做if条件来实现这一点。
class User:
username = (unique=True)
class Object:
user = models.ForeignKey(settings.AUTH_USER_MODEL)
name = ()
Run Code Online (Sandbox Code Playgroud)
我如何拥有多个同名的对象,但每个用户只能有一个唯一的对象名称。
例如:
user1只能有一个唯一的Object名称“dog”,user2也只能有一个唯一的Object名称“dog”,因此可以有多个同名的Object,但每个用户只能有一个Object通过外键命名为“dog”。如果 user1 尝试创建另一个名为“dog”的对象,则会引发类似表单验证错误的错误。
我正在尝试在 Django 中编写管理命令。根据文档默认设置为 False。我会假设默认值是正在传递的参数的默认值。 使 django 自定义管理命令参数“不需要”
这么说有什么好处 deafult=False
class Command(BaseCommand):
help = "helps in doing stuff"
def add_arguments(self, parser):
parser.add_argument(
'name', type=str, default=False,
help="The name of the folder to be created")
def handle(self, *args, **options):
pass
Run Code Online (Sandbox Code Playgroud) from flask_login import login_required
from flask_restful import Resource
@login required
class MyClass(Resource):
#...
Run Code Online (Sandbox Code Playgroud)
在主文件中,我调用类的方法,如:
api.add_resource(MyClass, '/some_url', methods=['GET', 'PUT', 'POST', 'DELETE'])
Run Code Online (Sandbox Code Playgroud)
我想我在@login_required这里使用了错误的方法,因为我收到了错误
AttributeError: 'function' object has no attribute 'as_view'
所以我假设它@login_required只能与函数一起使用。有没有办法将它与类合并?
我想重写login的功能__init__.py的django.contrib.auth
我做了以下步骤:
网址.py
url(r'^login/$', 'my_login'),
Run Code Online (Sandbox Code Playgroud)
视图.py
from django.contrib import auth
def login(request, user, backend=None):
# do some stuff
Run Code Online (Sandbox Code Playgroud)
设置.py
INSTALLED_APPS = [
#'django.contrib.auth',
'my_auth_app'
]
Run Code Online (Sandbox Code Playgroud)
但我觉得这是错误的做法。
其实我想contrib.auth用覆盖的login方法获得默认值
我有以下 ModelForm:
class IssueProcessForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(IssueProcessForm, self).__init__(*args, **kwargs)
self.fields['number'].disabled = True
self.fields['title'].disabled = True
self.fields['body'].disabled = True
self.fields['body'].widget = forms.Textarea(
attrs={
'cols': 50
}
)
class Meta:
model = Issue
fields = (
'number', 'title', 'body', 'price'
)
Run Code Online (Sandbox Code Playgroud)
我想用视图中的数据预先填充字段number、title和body,呈现表单,并确保显示与字段对应的值,同时禁用这些字段,以便用户不会更改值。我希望该price字段是用户触摸的唯一内容,并且当单击保存按钮时,我希望将所有内容保存到数据库中。我尝试了以下方法:
def issue_process(request, repo_name, issue_number):
get_issue_number = request.session.get('issue_number_{}'.format(issue_number))
get_issue_title = request.session.get('issue_number_{}_title'.format(issue_number))
get_issue_body = request.session.get('issue_number_{}_body'.format(issue_number))
if request.method == 'POST':
form = IssueProcessForm(request.POST)
if form.is_valid():
issue = form.save(commit=False)
issue.number = get_issue_number
issue.title = …Run Code Online (Sandbox Code Playgroud) 设定:
EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
EMAIL_HOST = 'smtp.mailgun.org'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'donotreply@kamiltrojnar.pl'
EMAIL_HOST_PASSWORD = 'passwordsecret'
EMAIL_USE_TLS = True
DEFAULT_FROM_EMAIL = 'donotreply@kamiltrojnar.pl'
SITE_ID = 2
Run Code Online (Sandbox Code Playgroud)
在控制台中输出:
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Subject: Testing email sending
From: donotreply@kamiltrojnar.pl
To: kamil.trojnar@gmail.com
Date: Tue, 13 Nov 2018 17:20:27 -0000
Message-ID <154212962720.11272.17395367179025062268@DESKTOP-EG7NCN4.home>
Run Code Online (Sandbox Code Playgroud)
视图:
def index(request):
send_mail("Testing email sending", 'AS title','donotreply@kamiltrojnar.pl',['kamil.trojnar@gmail.com'], fail_silently=False)
return render(request, 'userpanel/index.html')
Run Code Online (Sandbox Code Playgroud)
我没有收到任何错误,但是没有发送电子邮件。可能是什么问题?
django ×9
python ×7
django-forms ×3
django-views ×2
django-2.1 ×1
django-admin ×1
django-email ×1
flask ×1
flask-login ×1
login ×1
mailgun ×1
methods ×1
overriding ×1
python-3.x ×1
web ×1