我有一系列模型,其中包含要迁移到FK的字段。
之前
class Sizing(models.Model:
btu_hour = models.IntegerField()
flange = models.ForeignKey('parts.Router')
后
class Sizing(models.Model):
btu_hour = models.IntegerField()
configuration = models.ForeignKey(Configuration)
### WHAT I'D LIKE; alias only ###
flange = Alias(to='configuration__flange')
class Configuration(models.Model)
flange = models.ForeignKey('parts.Router')
假设我的视图中有查询在flange
字段上进行查询,我该如何创建别名?我有许多模型正在以上述方式重组,并希望使用此方法,以便我不必在视图等中替换该字段的每次使用。
会感激任何指针;关于模型别名的所有信息我发现只适用于相同模型字段。
答案 0 :(得分:1)
最简单的解决方案是创建@property
:
class Sizing(models.Model):
btu_hour = models.IntegerField()
configuration = models.ForeignKey(Configuration)
# define the property flange
@property
def flange(self):
return self.configuration.flange
然后,在任何视图中,如果您有sizing_obj.flange
,则根本不会受到影响。
但是,您无法在查询集或过滤器等中使用它。
答案 1 :(得分:0)
aliasName = models.ForeignKey(modelName, to_field='fieldName', on_delete=models.CASCADE)
这是Django外键中别名的格式
class Sizing(models.Model):
btu_hour = models.IntegerField()
configuration = models.ForeignKey(Configuration)
### WHAT I'D LIKE; alias only ###
flangeNew = models.ForeignKey(Configuration, to_field='flange', on_delete=models.CASCADE)
class Configuration(models.Model)
flange = models.ForeignKey('parts.Router')
这是新版本Django中别名的解决方案