esc*_*pee 3 python django foreign-keys modelform models
我正在制作一个测试表格,ModelForm它有两个模型。
CountryEmail我正在创建基于Email模型的表单。该Country模型具有名称字段,其值由COUNTRIES列表给出。我想在 中显示名称字段,其中EmailForm包含所有COUNTRIES值。我必须使用外键吗?请指导。
我的模型看起来像这样:
COUNTRIES = (('IND', 'India'), ('PAK', 'Pakistan'), ('AMR', 'America'))
class Country(models.Model):
name = models.CharField(max_length=3, choices=COUNTRIES)
class Email(models.Model):
title = models.CharField(max_length=50)
country = models.ForeignKey('Country')
sender = models.EmailField(max_length=20)
date = models.DateTimeField()
text = models.CharField(max_length=20)
class EmailForm(ModelForm):
class Meta:
model = Email
Run Code Online (Sandbox Code Playgroud)
如果我从中生成一个表格。它显示了一个空白的下拉菜单。如何从列表中获取值?
您可能希望向 ModelForm 添加自定义字段并排除原始外键:
class EmailForm(forms.ModelForm):
country_name = forms.CharField()
class Meta:
model = YourModel
exclude = ('country',)
Run Code Online (Sandbox Code Playgroud)
然后,在您的视图中,您应该手动创建(或获取如果存在)您的公司并保存表单:
def foo(request):
if request.method == 'POST':
form = EmailForm(request.POST)
if form.is_valid():
form.instance.country = Country.objects.get_or_create(cname=form.cleaned_data['country_name'])
form.save()
Run Code Online (Sandbox Code Playgroud)