小编Ala*_*air的帖子

从数据库加载的Django表单选项未更新

我从数据库中获得了用于列出客户的表格。

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__方法,但没有运气。

django django-forms

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

Django'bool'对象在模型保存时不可迭代

我正在尝试更新我的模型,所以当通过管理员检查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)

python django

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

Django Admin 不散列用户的密码

我使用AbstractBaseUser,并UserCreationForm与我的Django应用程序。通过我的应用程序注册用户时,密码以哈希格式保存并保存在数据库中。但是当我尝试使用 Django 管理站点做同样的事情时,密码以原始格式保存。

django django-admin web

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

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条件来实现这一点。

python django

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

Django用户ForeignKey和唯一对象名称

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”的对象,则会引发类似表单验证错误的错误。

python django django-models django-forms django-views

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

django管理命令中default=False的目的是什么

我正在尝试在 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)

python django django-management-command

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

如何在 Flask 中将 login_required 与类一起使用?

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只能与函数一起使用。有没有办法将它与类合并?

python flask flask-login

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

django 覆盖身份验证登录方法

我想重写login的功能__init__.pydjango.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方法获得默认值

django methods overriding login

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

如何预填充 Django ModelForm 字段

我有以下 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)

我想用视图中的数据预先填充字段numbertitlebody,呈现表单,并确保显示与字段对应的值,同时禁用这些字段,以便用户不会更改值。我希望该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)

python django django-forms python-3.x django-2.1

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

Django send_mail不适用于mailgun

设定:

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)

我没有收到任何错误,但是没有发送电子邮件。可能是什么问题?

python django django-views django-email mailgun

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