Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django在表单中静态添加字段_Python_Django_Django Forms - Fatal编程技术网

Python Django在表单中静态添加字段

Python Django在表单中静态添加字段,python,django,django-forms,Python,Django,Django Forms,你好 我正在尝试制作一个Django表单,在这里我可以静态地添加字段。下图描述了这个概念 我想要一个有新按钮的表单。“新建”按钮应该重定向到另一个页面,在那里我可以填写数据,如从、到和金额。一旦我按下submit键,它将返回到表单,在表单中填写的数据应显示为金额1、金额2等 有人能告诉我正确的路怎么走吗 另外,我不能使用javascript 我正在使用的代码: models.py from django.db import models from django.utils import time

你好

我正在尝试制作一个Django表单,在这里我可以静态地添加字段。下图描述了这个概念

我想要一个有新按钮的表单。“新建”按钮应该重定向到另一个页面,在那里我可以填写数据,如从、到和金额。一旦我按下submit键,它将返回到表单,在表单中填写的数据应显示为金额1、金额2等

有人能告诉我正确的路怎么走吗

另外,我不能使用javascript

我正在使用的代码:

models.py

from django.db import models
from django.utils import timezone
from django.contrib.auth.models import User
from django.urls import reverse
from django.forms import inlineformset_factory


class Post(models.Model):
    title_choices = [
        ('Mr', 'Mister'),
        ('Ms.', 'Miss'),
    ]

    title = models.CharField(max_length=100)
    first_name = models.CharField(max_length=100, default = '')
    last_name = models.CharField(max_length=100, default = '')
    date_posted = models.DateTimeField(default=timezone.now)

    titles = models.CharField(
        max_length = 3,
        choices = title_choices,
        default= 'Mr', 
    )

    

    def __str__(self):
        return self.title

    def get_absolute_url(self):
        return reverse('post-detail', kwargs={'pk': self.pk})

class Debt(models.Model):
    Money = models.ForeignKey(Post, on_delete=models.CASCADE, null = True)
    CurrentDebt = models.CharField(max_length=100, default = '')
    Period = models.CharField(max_length=100, default = '')
views.py

from django.shortcuts import render
from django.views.generic import (
    View,
    ListView,
    DetailView,
    CreateView,
    UpdateView,
    DeleteView,
    TemplateView
)
from .models import Post, Debt
from django.contrib.auth.mixins import LoginRequiredMixin, UserPassesTestMixin
from .latex import tex
from django.http import FileResponse, Http404
from django.urls import reverse
from django.forms import inlineformset_factory, BaseInlineFormSet

FullForm = inlineformset_factory(Post, Debt, fields=('CurrentDebt', 'Period',), extra= 1, can_delete= True)

class PostCreateView(LoginRequiredMixin, CreateView, BaseInlineFormSet):
    model = Post
    fields = ['first_name', 'last_name', 'titles' ,'title']

    def form_valid(self, form):
        form.instance.author = self.request.user # Use this to get the information from the form.
        response = super().form_valid(form)
        return response


class PostCreate2View(LoginRequiredMixin, View):
    
    template_name = 'Blog/form.html'
    model = Debt
    fields = ['CurrentDebt', 'Period']

为了简单起见,我将使用三个矩形,从左到右从1到3对它们进行编号

由于您没有代码,我将尝试给您一个粗略的蓝图,其中包含我认为可以帮助您的方法。我假设矩形2和矩形3是用户填充数据的表单,提交矩形2会将数据添加到矩形1中

我看到的挑战是: 1.让矩形2记住当我们转到矩形3并返回到矩形2时,为姓名和姓氏提交的原始数据。 2.将数据从矩形2传输回矩形3

对于挑战1,我将使用。您将有两个隐藏输入,一个用于name,另一个用于last_name


对于挑战2,我将使用。有了这个mixin,您可以使用诸如get_form_kwargs see previous link之类的方法将数据从视图传递到表单。因此,一旦提交矩形3,就应该将表单数据重定向到矩形2的GET请求。从这里开始,您可以使用get_form_kwargs,并在表单的u init_u方法中使用适当的数据填充表单。

嗨,Vincent,我添加了一段我正在使用的代码。目前在我的模板中,我有一个“新建”按钮,它将导致另一个表单。问题是主键和作者在表单之间都不相关。矩形2是通过使用PostCreateView类实现的,矩形3-Post2CreateView.Hi,因此,如果我正确地理解了问题,当您回到矩形2时,表单会忘记主键和作者吗?还有一个问题,您是否在forms.py中定义了一些表单?是的,您理解正确。我没有在表单中定义任何表单。py这些天我很忙,所以我将尝试提供一些可以帮助您的资源。