我正在使用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']
在我的网站中,在用于添加新Connection的URL中,我具有包含RouteID的级联列表。而且我希望它包含RouteName而不是ID,因此选择起来会更容易。我应该如何更改我的ConnectionForm,以便仍然可以使用外键来路由表,但是看到RouteName而不是RouteID?
For now it's looking like this,但我很想拥有RouteNames列表,同时仍向连接表添加良好的外键RouteID
答案 0 :(得分:0)
更新路由模型的__str__
方法:
class Route(models.Model):
name = models.CharField(max_length=20)
def __str__(self):
return self.name
因为只要您在对象上调用str(),就会调用__str__()
方法。 Django在许多地方(例如在Modelform中)使用str(obj)。默认情况下,它返回id
或pk
,这就是为什么您以模型形式看到id的原因。因此,通过用name
覆盖它,您将看到名称出现在选择字段中。有关更多详细信息,请参见documentation。