0

我有一些通过 ForeignKey 检索对象的表单,例如Flight.Trip

因此,例如,当有人尝试创建一个新的Trip时,他们可以Hotel从下拉列表中选择一个。

我的问题是:我们如何在Trip表单上添加Hotel. 就像使用 Django 自己的管理仪表板时一样,您会在其中获得一个加号,并且您可以Hotel在创建Trip.

编辑:

HotelTrip模型上的 ForeignKey。我正在使用ModelForm.

目标是您可以Hotel在创建Trip.

4

1 回答 1

0

我想你正在寻找forms.ModelChoiceField.
它是这样使用的:

hotel = forms.ModelChoiceField(
    queryset=Hotel.objects.all() # or whatever queryset you want to use
    # Rest of the configuration
)

如果我没记错的话,它将创建一个 HtmlSelect标记,其中pk包含每个Hotel对象的选项作为值。要指定每个选项的内部文本,您必须为Hotel该类定义以下方法:

def __str__(self):
    return self.name # or whatever needed


如果您确实在寻找它,那么如果您正在构建生产级网站/应用程序,我必须劝阻您不要使用它。一个更好(显然更精细)的方法是获取查询集Hotels,将它们序列化为 JSON,为每个酒店创建一个卡片/行/小部件供用户搜索和选择。但是,它是管理小型项目的一种快速便捷的方式。

于 2020-02-25T23:19:19.323 回答