不填充主键数据的脆性表格

问题描述

我有一个要从另一个页面发送数据的表单。数据肯定在发送,因为我有一个基于FK填充的测试模板标签,但表单本身不会填充数据。

models.py

class Project(models.Model):
curr_choices = (
    ('USD','USD'),('GBP','GBP'),('EUR','EUR'),)

production_title = models.CharField(max_length=200,unique=True)
budget = models.FloatField()
currency = models.CharField(max_length=3,choices=curr_choices,default='USD')
distributor = models.CharField(max_length=200)
image = models.ImageField(null=True,blank=True,upload_to="static/images")
proj_media = models.CharField(max_length=200)
licencee = models.CharField(max_length=200)
rating = models.CharField(max_length=20)
release_date = models.DateField()
synopsis = models.TextField()
term = models.CharField(max_length=20)
territory = models.CharField(max_length=20)
writer_spot = models.CharField(max_length=200)
user = models.ForeignKey(User,on_delete=models.CASCADE)

def __str__(self):
    return self.production_title

views.py

def update_project(request,pk):

update = Project.objects.get(id=pk)

if request.method == "POST":
    form = ProjectForm(request.POST,request.FILES,instance=update)

    if form.is_valid():
        instance = form.save(commit=False)
        instance.user = request.user
        instance.save()

        return redirect('projects')
else:
    form = ProjectForm()

context = {
    'form': form,'update': update
}
return render(request,"projectsync/create_project.html",context)

forms.py

class ProjectForm(forms.ModelForm):

def __init__(self,*args,**kwargs):
    super().__init__(*args,**kwargs)
    self.helper = FormHelper()
    self.helper.layout = Layout(
            PrependedText('production_title',"",placeholder="Example Title"),PrependedText('licencee',placeholder="Example Licencee"),PrependedText('distributor',placeholder="Example distributor"),PrependedText('writer_spot',placeholder="Example Writer of Spot"),PrependedText('synopsis',placeholder="Example Synopsis"),Row(
                Column('currency',css_class='form-group col-md-2 mb-0'),Column(PrependedAppendedText('budget','.00'),css_class='form-group col-md-10 mb-0'),css_class='form-row'
            ),Row(
                Column(PrependedText('term',placeholder="Perpetuity"),css_class='form-group col-md-6 mb-0'),Column(PrependedText('proj_media',placeholder="TV"),css_class='form-group col-md-4 mb-0'),Column(PrependedText('rating',placeholder="PG-13"),Row(
                Column(PrependedText('release_date',placeholder="DD/MM/YYYY"),Column(PrependedText('territory',placeholder="Worldwide"),Column('image',Submit('submit','Create')
        )

class Meta:
    model = Project
    fields = (
            'production_title','licencee','distributor','writer_spot','synopsis','budget','currency','term','proj_media','rating','release_date','territory','image')
    labels = {
            'proj_media':'Media'
            }

html-模板标签{{update.production_title}}正在填充,但{{crispy form}}未填充

{% extends 'projectsync/base.html' %}
{% load crispy_forms_tags %}

{% block title%}
Create Project
{% endblock %}

{% block content %}


<div class="container-fluid">

<!-- Page heading -->
<h1 class="h3 mb-2 text-gray-800">New Project {{update.production_title}}</h1>
<br>
    <div class="card shadow mb-4">
        <div class="card-body">
    {% csrf_token %}
    {% crispy form %}

</div>
</div>
</div>
</br>
</br>
{% endblock %}

似乎无法弄清楚我哪里出了问题。

谢谢!

解决方法

在您的HTML模板中,它是{{form | crispy}}

,

将实例添加到else语句中

return self.production_title
views.py

def update_project(request,pk):

update = Project.objects.get(id=pk)

if request.method == "POST":
    form = ProjectForm(request.POST,request.FILES,instance=update)

    if form.is_valid():
        instance = form.save(commit=False)
        instance.user = request.user
        instance.save()

        return redirect('projects')
else:
    form = ProjectForm(instance=update)

context = {
    'form': form,'update': update
}
return render(request,"projectsync/create_project.html",context)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...