检索数据进行编辑时默认不显示保存的数据

问题描述 投票:0回答:0

我正在做一个 crud,模型的一个字段是另一个模型的外键,当我打开保存在表单中的记录进行编辑而不是选择显示默认保存的数据时,它显示为空。这是我的代码:

模型.py

class Cliente(models.Model):
    nome = models.CharField(max_length=200, blank=False, null=False)
    email = models.EmailField(max_length=200, blank=False, null=False)

    def __str__(self):
        return self.nome


class Imovel(models.Model):
    numero = models.CharField(max_length=200, blank=False, null=False)
    cliente = models.ForeignKey("Cliente", null=True, on_delete=models.SET_NULL)

    def __str__(self):
        return self.numero

表格.py

from django import forms
from imoveis.models import Imovel, Cliente


class FormImovel(forms.ModelForm):
    class Meta:
        model = Imovel

        fields = [
            'numero',
            'cliente',
        ]


class FormCliente(forms.ModelForm):
    class Meta:
        model = Cliente

        fields = [
            'nome',
            'email',
        ]

views.py

from django.shortcuts import render, get_object_or_404
from imoveis.forms import FormCliente, FormImovel
from imoveis.models import Imovel, Cliente


def imoveis(request):
    if request.method == 'POST':
        form = FormImovel(request.POST)
        if form.is_valid():
            form.save()
    return render(request, 'imoveis.html')


def clientes(request):
    if request.method == 'POST':
        form = FormCliente(request.POST)
        if form.is_valid():
            form.save()
    return render(request, 'clientes.html')


def insere_imovel(request):
    form = FormImovel()
    return render(request, 'imovel_form.html', {'form': form})


def edita_imovel(request, imovel_id):
    imovel = get_object_or_404(Imovel, pk=imovel_id)
    form = FormImovel(imovel.__dict__)
    return render(request, 'imovel_form.html',
                  {'form': form, 'imovel_id': imovel_id})


def insere_cliente(request):
    form = FormCliente()
    return render(request, 'cliente_form.html', {'form': form})

urls.py

from django.contrib import admin
from django.urls import path
from imoveis.views import clientes, imoveis, insere_imovel, edita_imovel, insere_cliente 

urlpatterns = [
    path('admin/', admin.site.urls),
    path('clientes/', clientes, name='clientes'),
    path('imoveis/', imoveis, name='imoveis'),
    path('insere_cliente/', insere_cliente, name='insere_cliente'),
    path('insere_imovel/', insere_imovel, name='insere_imovel'),
    path('edita_imovel/<int:imovel_id>', edita_imovel, name='edita_imovel'),
]

模板/imovel_form.html

<form method="post" action="{% url 'imoveis' %}">
  {% csrf_token %}
{{ form.as_table }}
<button type="submit">salvar</button>
</form>

我需要打开记录编辑时外键生成的select,默认给我显示该字段保存的数据

python django forms select crud
© www.soinside.com 2019 - 2024. All rights reserved.