相关疑难解决方法(0)

Django:使用表单在一个模板中的多个模型

我正在构建支持票据跟踪应用程序,并且我想从一个页面创建一些模型.门票通过ForeignKey属于客户.Notes也通过ForeignKey属于Tickets.我想选择一个客户(这是一个完整的单独项目)或创建一个新客户,然后创建一个Ticket,最后创建一个分配给新票证的Note.

由于我是Django的新手,我倾向于迭代工作,每次尝试新功能.我玩过ModelForms,但我想隐藏一些字段并进行一些复杂的验证.看起来我正在寻找的控制级别要么需要使用formset,要么手工完成所有操作,完成一个繁琐的手工编码模板页面,我试图避免.

我有什么可爱的功能吗?有人使用formset有一个很好的参考或示例吗?我为他们花了整整一个周末的API文档,我仍然无能为力.如果我分解并手工编写所有内容,这是一个设计问题吗?

python django django-forms

110
推荐指数
6
解决办法
9万
查看次数

Django-Registration和Django-Profile,使用您自己的自定义表单

我正在使用django-registration和django-profile来处理注册和配置文件.我想在注册时为用户创建个人资料.我创建了一个自定义注册表单,并使用以下教程将其添加到urls.py:

http://dewful.com/?p=70

本教程中的基本思想是覆盖默认注册表单以同时创建配置文件.

forms.py - 在我的个人资料应用中

from django import forms
from registration.forms import RegistrationForm
from django.utils.translation import ugettext_lazy as _
from profiles.models import UserProfile
from registration.models import RegistrationProfile

attrs_dict = { 'class': 'required' }

class UserRegistrationForm(RegistrationForm):
    city = forms.CharField(widget=forms.TextInput(attrs=attrs_dict))

    def save(self, profile_callback=None):
        new_user = RegistrationProfile.objects.create_inactive_user(username=self.cleaned_data['username'],
        password=self.cleaned_data['password1'],
        email=self.cleaned_data['email'])
        new_profile = UserProfile(user=new_user, city=self.cleaned_data['city'])
        new_profile.save()
        return new_user
Run Code Online (Sandbox Code Playgroud)

在urls.py中

from profiles.forms import UserRegistrationForm
Run Code Online (Sandbox Code Playgroud)

url(r'^register/$',
                           register,
                           {'backend': 'registration.backends.default.DefaultBackend', 'form_class' : UserRegistrationForm},
                           name='registration_register'),
Run Code Online (Sandbox Code Playgroud)

显示表单,我可以在City中输入,但不会在DB中保存或创建条目.

python django profile registration django-forms

31
推荐指数
2
解决办法
4万
查看次数

Django - 使用多种形式

我想要做的是在一个页面中管理多个表单,我知道有表单集,我知道表单管理是如何工作的,但是我遇到了一些问题.

只是为了帮助你想象我的问题是什么我将使用django示例模型:

from django.db import models

class Poll(models.Model):
    question = models.CharField(max_length=200)
    pub_date = models.DateTimeField()

class Choice(models.Model):
    poll = models.ForeignKey(Poll)
    choice = models.CharField(max_length=200)
    votes = models.IntegerField(default=0)
Run Code Online (Sandbox Code Playgroud)

现在,想象一下我已经制作了表格条款:

from django import forms
from mysite.polls.models import Poll, Choice

class PollForm(forms.ModelForm):
    class Meta:
        model = Poll

class ChoiceForm(forms.ModelForm):
    class Meta:
        model = Choice
        exclude = ('poll',) 
Run Code Online (Sandbox Code Playgroud)

所以我想要做的是在一个页面中有几个Poll和Choice模型的表单实例,但是请注意这些模型也可以重复:

<form action="{{url}}" method="post">
    {{pollform}}
    {{choiceform}}
    {{pollform}}
</form>
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,有两个Poll表单和一个Choice表单,但Poll表单由Choice表单分隔.我确实需要表单在页面中保持顺序,因此使用表单集要困难一些.

我得到的问题是,帖子中的值都是名称"answer",所以我得到了所有表单中所有元素的列表,名称为"answer",我无法确定哪些属于每种形式.

不知道这个解释是否能清楚地看到我的问题.有什么想法让这些东西完成吗?

谢谢你的帮助!

PD:不要关注Poll和Choice之间的关系,这些模型只是为了澄清问题,所以这种关系根本不重要.

python forms django django-forms

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

django提交两个不同的表单,一个提交按钮

是否可以提交两种不同的表格,在django中有一个提交按钮?我有一个称为"乐器"的表格和4个相同的表格"配置".现在我想提交一个配置和仪器.例如,仪器+配置1,仪器+配置2.每个配置都有自己的提交按钮.

我在配置表单中尝试了一个按钮:

<input onclick="submitForms()" class="btn btn-primary cfg" type="submit" value="Start" >
Run Code Online (Sandbox Code Playgroud)

并调用js函数'onclick':

submitForms = function(){
    console.log('ok'); //only for testing
    document.forms["firstForm"].submit();
    document.forms["secondForm"].submit();
}
Run Code Online (Sandbox Code Playgroud)

这是我在views.py中的方法:

if request.method == 'POST':
        form1 = dataproviderInstrumentForm(request.POST)
        form2 = dynamicTimeseriesForm(request.POST)
        print(request.POST)
        if form1.is_valid() or form2.is_valid(): 
            # do some stuff

else:
    form1 = dataproviderInstrumentForm() # an unbound form
    form2 = dynamicTimeseriesForm() # an unbound form
Run Code Online (Sandbox Code Playgroud)

python forms django

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

django模型表.包括相关模型的字段

我有一个名为Student的模型,它有一些字段,与用户的一个OneToOne关系(django.contrib.auth.User).

class Student(models.Model):

    phone = models.CharField(max_length = 25 )
    birthdate = models.DateField(null=True) 
    gender = models.CharField(max_length=1,choices = GENDER_CHOICES) 
    city = models.CharField(max_length = 50)
    personalInfo = models.TextField()
    user = models.OneToOneField(User,unique=True)
Run Code Online (Sandbox Code Playgroud)

然后,我有一个模型的ModelForm

class StudentForm (forms.ModelForm):
    class Meta:
        model = Student
Run Code Online (Sandbox Code Playgroud)

使用Meta类中的fields属性,我设法只显示模板中的一些字段.但是,我可以指出要显示的用户字段吗?

有点像:

   fields =('personalInfo','user.username')
Run Code Online (Sandbox Code Playgroud)

目前没有显示任何内容.仅适用于StudentFields /

提前致谢.

python django django-forms

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

python从具有相同方法名称的不同路径的多重继承

下面的代码示例,可以super使用,或者C有来电A.fooB.foo明确?

class A(object):
    def foo(self):
        print 'A.foo()'

class B(object):
    def foo(self):
        print 'B.foo()'

class C(A, B):
    def foo(self):
        print 'C.foo()'
        A.foo(self)
        B.foo(self)
Run Code Online (Sandbox Code Playgroud)

python multiple-inheritance

23
推荐指数
5
解决办法
2万
查看次数

创建一个Django表单以保存两个模型

我有常规的Django User模型和UserDetails模型(OneToOneFieldUser),它作为User模型的扩展.(我尝试了Django 1.5的功能,这是一个令人头疼的奇怪可怕的文档,所以我坚持OneToOneField选择)

所以,在我寻求建立一个自定义的注册页面,将有包括中的登记表User字段和UserDetails领域,我想知道是否有自动生成表格(及其所有验证的)这些两个相关模型的方法.我知道这适用于由一个模型组成的表单:

class Meta:
    model = MyModel
Run Code Online (Sandbox Code Playgroud)

但是,无论如何要为包含两个相关模型的表单获得类似的功能吗?

python django django-models django-forms

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

Django forms.MultipleChoiceField只选择一个值

我有一个只有一个字段的表单MultipleChoiceField.在模板中它被印有其它两种形式是ModelForm相同的HTML表格内秒(如所描述的在这里).

当读取POST视图中的所有数据时,一切都在那里并且正常工作,除了来自此的MultipleChoiceField值,如果直接从中选择它,则仅显示表格中的最后一个选定值request.POST['field']- 但有趣的是,如果我打印request.POST,则选择所有内容在那儿.这怎么可能?这真让我大吃一惊.

这是形式:

class EstadosAtendidosForm(forms.Form):
    estadosSelecionados = forms.MultipleChoiceField(choices = choices.UF.list)
Run Code Online (Sandbox Code Playgroud)

这是观点:

@login_required
@csrf_protect
def cadastro_transportadora(request):
    if request.method == 'POST':
        print request.POST
        print len(request.POST['estadosSelecionados'])
        print request.POST
        estadosSelecionados = request.POST['estadosSelecionados']
        for estado in estadosSelecionados:
            print estado

        form_end = EnderecoForm(request.POST)
        form_transp = TransportadoraForm(request.POST)



    else:
        transportadora_form = TransportadoraForm()
        endereco_form = EnderecoForm()
        estados_form = EstadosAtendidosForm()
        return render(request, 'transporte/transportadora/cadastro.html', {'transportadora_form': transportadora_form, 'endereco_form': endereco_form, 'estados_form': estados_form})
Run Code Online (Sandbox Code Playgroud)

这是模板:

{% extends "transporte/base.html" %}

{% …
Run Code Online (Sandbox Code Playgroud)

python django

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

在一个Django视图中组合两个表单

我正在为官方Django教程中的民意调查应用添加更多功能.我正在研究的一件事是通过登录用户创建投票/选择(而不是在管理屏幕中,教程离开我们).

我希望创建一个用户可以创建一个轮询的视图,然后还包括一些与轮询相关联的选择.Django Admin自动完成它,我不知道如何在视图中写出来.

首先,这些是我的相关文件:

models.py

import datetime

from django.db import models
from django.utils import timezone


class Poll(models.Model):
    question_text = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')

    def __unicode__(self):
        return self.question_text

    def was_published_recently(self):
        return self.pub_date >= timezone.now() - datetime.timedelta(days=1)

    was_published_recently.admin_order_field = 'pub_date'
    was_published_recently.boolean = True
    was_published_recently.short_description = 'Published recently?'

class Choice(models.Model):
    question = models.ForeignKey(Poll)
    choice_text = models.CharField(max_length=200)
    votes = models.IntegerField(default=0)

    def __unicode__(self):
        return self.choice_text
Run Code Online (Sandbox Code Playgroud)

forms.py

from django import forms
from .models import Poll, Choice
from datetime import datetime

class PollForm(forms.ModelForm):
    question_text = forms.CharField(max_length=200, …
Run Code Online (Sandbox Code Playgroud)

python django

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