相关疑难解决方法(0)

在init上创建django表单

如何在表单init函数中添加字段?例如,在下面的代码中,我想添加一个配置文件字段.

class StaffForm(forms.ModelForm):
    def __init__(self, user, *args, **kwargs):
        if user.pk == 1:
            self.fields['profile'] = forms.CharField(max_length=200)

        super(StaffForm, self).__init__(*args, **kwargs)

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

我知道我可以在类StaffForm ....行下面添加它但我希望这是动态的,具体取决于传入的用户,所以不能这样做.

谢谢

django django-forms

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

Django动态表单示例

我有一个在Django中创建动态表单的简单要求 - 我已经看过很多例子,但它们似乎不完整,或者需要比我更广泛的Python和Django知识!没有显示应该如何调用示例的动态部分:

这是Q1和Q2的表单类 - 我在表单上放置一个按钮来添加另一个名为Q3的字段 - 然后再次按下Q4:我认为我的init函数半正确:

class testform(forms.Form):
    Q1 = forms.CharField()
    Q2 = forms.CharField()

    def __init__(self, *args, **kwargs):
        super(testform,self).__init__(*args,**kwargs)
        self.fields['Q%s'%i] = forms.CharField(label='Q%i' % i)
Run Code Online (Sandbox Code Playgroud)

我想在表单上放置一个按钮以添加另一个名为Q3的字段,然后再次按下Q4.

  • 如何从视图中调用_ init _function来添加这些字段?
  • 如果我使用Javascript动态添加字段,我如何调用init以便在POST表单时能够正确验证Django?

django django-forms django-views

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

Django在视图中向formset添加表单

我陷入了设计问题.

想象一下订单模型和材料模型,

class Material(models.Model):
    material_code = models.CharField(max_length=40)
    standard_price = models.DecimalField()

class Order(models.Model):
    customer = models.ForeignKey(Customer)


class OrderItems(models.Model):
    order = models.ForeignKey(Order)
    material = models.ForeignKey(Material)
    price = models.DecimalField()
Run Code Online (Sandbox Code Playgroud)

在我的订单详细信息视图中,我使用inlineformset_factory(Order,OrderItems)填充orderitems

我想要的行为如下:

如果用户想要添加更多订单项,我想将用户重定向到材料列表页面,用户选择一个或多个材料并确认,然后我将其重定向到新添加的项目再次订购详细信息视图.

我正在考虑这些工作,例如django管理员操作与中间页面.

在添加新的订购项目之前,我还想从物料standard_price设置订单项价格,这意味着我想在将其添加到订单项之前修改formsets值.


我想在这里问的问题是,是否有一种更简单的方法来实现这一点,似乎将formset数据存储到session并用新项重新填充formset并不容易.我会考虑另一个解决这个问题的方法.

我不想要js解决方案,想象一下我的订单模型上的字段,grandtotal,我可以计算总项目数量,用js解决方案我可能要用js做计算逻辑,用户添加项目并更改价格然后我用js做爷爷计算.这是我想要避免的.

django formset

4
推荐指数
1
解决办法
930
查看次数

Django - 动态添加字段

目标: 通过按下按钮动态地向表单添加字段.提交后,将这些值存储在列表中的所有字段中.

(我已经查看了Stack Overflow上的其他问题,并试图找到一个基本的教程/解释如何执行此操作:动态地向表单添加字段)

我不确定我需要查找/研究什么.我知道它将涉及JavaScript,但它的Django方面,我不确定它将如何工作.

我为初学者创建了一个基本表单:

在此输入图像描述

Models.py

from django.db import models

class SimpleForm(models.Model):
    basic_field = models.CharField(max_length=200)
Run Code Online (Sandbox Code Playgroud)

Forms.py

from django import forms
from models import SimpleForm

class SimpleForm(forms.ModelForm):

class Meta:
    model = SimpleForm
    fields = ['basic_field']
Run Code Online (Sandbox Code Playgroud)

Views.py

from django.shortcuts import render
from forms import SimpleForm

def index(request):
    if request.method == "POST":
        # For loop to iterate over dynamically created fields
        # Store values in list
    else:
        form = SimpleForm()
    return render(request, "index.html", {'form':form})
Run Code Online (Sandbox Code Playgroud)

的index.html

{% block content %}
    <h1>Simple …
Run Code Online (Sandbox Code Playgroud)

python forms django jquery

3
推荐指数
1
解决办法
5049
查看次数

动态生成django表单

我正在尝试动态生成 python 类。在这里,一个 django 形式。

class BankForm(forms.Form):
    name = forms.CharField()

for i in range(10):
    setattr(BankForm, 'contact_' + str(i), forms.CharField())
Run Code Online (Sandbox Code Playgroud)

但是在使用表单时,只name显示该字段。关于如何做到这一点的任何建议?

编辑:发现了modelform_factory,看起来是一种解决方案

EDIT2:更好,看起来add_fields我可以使用一种方法

python django metaprogramming django-forms

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