我就是不明白我一直在阅读,但我甚至没有接近找到答案。这很可能非常容易。我有两个模型人(姓名和邮政编码)和邮政编码(邮政编码和城市)。
当注册一个新的人时,应输入字段名称和邮政编码。当zipcode输入相关的正确的城市从Zipmodel应显示
models.py
class Zip(models.Model):
zipcode = models.IntegerField()
city = models.CharField(max_length=200)
def __str__(self):
return str(self.zipcode)
class Person(models.Model):
name = models.CharField(max_length=200)
zipcode = models.ForeignKey('Zip',on_delete=models.CASCADE,)
def __str__(self):
return self.name
字符串
forms.py
from django import forms
from .models import Zip, Person
class PersonForm(forms.ModelForm):
class Meta:
model = Person
fields = ('name', 'zipcode',)
class ZipForm(forms.ModelForm):
class Meta:
model = Zip
fields = ('zipcode', 'city',)
型
views.py
from django.shortcuts import render, redirect, get_object_or_404
from .forms import PersonForm, ZipForm
from .models import Zip, Person
def index(request):
return render(request, 'theapp/index.html' )
def person_new(request):
if request.method == "POST":
form = PersonForm(request.POST)
if form.is_valid():
post = form.save(commit=False)
post.save()
return redirect('person_detail', pk=post.pk)
else:
form = PersonForm()
return render(request, 'theapp/person.html', {'form': form})
def zip_new(request):
if request.method == "POST":
form = ZipForm(request.POST)
if form.is_valid():
post = form.save(commit=False)
post.save()
return redirect('zip_detail', pk=post.pk)
else:
form = ZipForm()
return render(request, 'theapp/zip.html', {'form': form})
def person_detail(request, pk):
post = get_object_or_404(Person, pk=pk)
return render(request, 'theapp/person_detail.html', {'post': post})
def zip_detail(request, pk):
post = get_object_or_404(Zip, pk=pk)
return render(request, 'theapp/zip_detail.html', {'post': post})
型
person.html
{% block body %}
<section>
<h2>new person</h2>
</section>
<form method="POST" class="person-form">{% csrf_token %}
{{ form.as_p }}
<button type="submit" class="save btn btn-secondary">Save person</button>
</form>
{% endblock %}
型
这就是我想要的样子。输入邮政编码时。纽约显示。
的数据
我会非常感谢任何帮助或指引我在正确的方向。
谢谢你的好意
1条答案
按热度按时间ioekq8ef1#
基本上,您可以在
forms.py
中执行以下操作:字符串
然后在您的模板上,您必须看到显示的城市,而不是您的邮政编码,您可以看到显示的城市名称。
这是最简单和最干净的方法。其他的方法会非常复杂。