我正在尝试在ModelForm中初始化ForeignKey。这应该是Django 101,但我显然没有谷歌搜索和阅读文档。这就是我试过的:
# models.py
class Sale(models.Model):
pass
class Settlement(models.Model):
sale = models.ForeignKey(Sale)
# forms.py
class SettlementForm(ModelForm):
class Meta:
model = Settlement
# views.py
def add_settlement(request, sale_id):
sale = get_object_or_404(Sale, id=sale_id)
form = SettlementForm(initial={'Sale': sale})
form.fields['sale'].initial = str(sale)
return render(request, 'settlement.html', {'settlementform': form, 'sale': sale})
是的,这是我试图初始化ForeignKey的两种不同(和错误)方式,但失败了。那么,你如何以正确的方式做到这一点?
(是的,我搜索了StackOverflow,但正如我所说,我显然在谷歌搜索失败:-()
答案 0 :(得分:2)
要记住的是外键字段的值是它的ID。这两种方法都可以使用,但每种方法都有(不同的)问题。
对于第一种方法,您应该使用正确的字段名称:
form = SettlementForm(initial={'sale': sale.id})
对于第二个,您必须传递ID,而不是字符串表示:
form.fields['sale'].initial = sale.id
第一种方法更可取。