脆皮表格未填充主键数据

crispy form not populating with data from primary key

我有一个表单,我想从另一个页面向其发送数据。数据确实在发送,因为我有一个基于 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"), css_class='form-group col-md-2 mb-0'),
                css_class='form-row'
            ),
            Row(
                Column(PrependedText('release_date', "", placeholder="DD/MM/YYYY"), css_class='form-group col-md-4 mb-0'),
                Column(PrependedText('territory', "", placeholder="Worldwide"), css_class='form-group col-md-4 mb-0'),
                Column('image', css_class='form-group col-md-4 mb-0'),
                css_class='form-row'
            ),
            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)