gpt4 book ai didi

django - 以模型形式初始化外键

转载 作者:行者123 更新时间:2023-12-05 03:14:22 25 4
gpt4 key购买 nike

我正在尝试在 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 但失败的 2 种不同(且错误)的方法。那么,如何以正确的方式做到这一点?

(是的,我搜索了 StackOverflow,但正如我所说,我显然无法通过谷歌搜索 :-( )

最佳答案

要记住的是,外键字段的值是它的 ID。这两种方法都可以,但每种方法都有(不同的)问题。

对于第一种方法,您应该使用正确的字段名称:

form = SettlementForm(initial={'sale': sale.id})

对于第二个,您必须传递 ID,而不是字符串表示形式:

form.fields['sale'].initial = sale.id

虽然第一种方法更可取。

关于django - 以模型形式初始化外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25424437/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com