我正在做一个 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,默认给我显示该字段保存的数据