如何在ModelForm生成的html表单中更改字段?

2024-05-15 13:21:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用sqlite数据库制作我的第一个django应用程序。我有一些模型,例如:

class Connection(models.Model):
    routeID = models.ForeignKey(Route, on_delete=models.CASCADE)
    activityStatus = models.BooleanField()
    car = models.ForeignKey(Car, on_delete=models.CASCADE)
class Route(models.Model):
     name = models.CharField(max_length=20)

和形式

class RouteForm(ModelForm):
    class Meta:
        model = Route
        fields = ['name']

class ConnectionForm(ModelForm):
    class Meta:
        model = Connection
        fields = ['routeID', 'activityStatus', 'car']

在我的网站中,在添加新连接的url中,我有一个包含路由ID的级联列表。我希望它包含RouteName,而不是ID,这样更容易选择。我应该如何更改我的ConnectionForm,这样我仍然可以使用外键路由表,但可以看到RouteName而不是RouteID

For now it's looking like this,但我希望有一个routeName列表,同时还要向连接表中添加好的外键RouteID


Tags: namemodelonmodelsconnectiondeletecarroute
1条回答
网友
1楼 · 发布于 2024-05-15 13:21:45

更新路由模型的__str__方法:

class Route(models.Model):
 name = models.CharField(max_length=20)

def __str__(self):
   return self.name

因为每当调用对象上的str()时,__str__()方法都会被调用。Django在许多地方使用str(obj),比如在Modelform中。默认情况下,它返回idpk,这就是您看到模型形式的id的原因。因此,通过用name覆盖它,您将看到名称出现在选项字段中。请参阅documentation以了解有关此的更多详细信息

相关问题 更多 >