2

我正在规范与Django项目关联的数据库,并且将字段移动到不同的表中。作为实现过程的一部分,如果在我实际删除列之前尝试在添加新表后尝试使用旧属性,我想向我的同事抛出一个弃用警告。在Django模型中弃用字段

class Asset(Model): 
    model = models.CharField(max_length=64, blank=True, null=True) 
    part_number = models.CharField(max_length=32, blank=True, null=True) # this will be a redundant column to be deprecated 
    company = models.ForeignKey('Company', models.CASCADE, blank=True, null=True) # this will be a redundant column to be deprecated 
    # other database fields as attributes and class methods 

我的理解是,我需要增加沿warnings.warn('<field name> is deprecated', DeprecationWarning)在某处类线的东西,但我哪里会增加吗?

+0

您可以将字段更改为属性并在那里处理警告,并在可能的情况下返回适当的值。 –

回答

0

我做了类似的事情 - 将该字段转换为属性并处理警告。请注意,这仍然会破坏您在该字段上进行过滤的任何查询 - 只是有助于从实例访问该属性。

class NewAsset(Model): 
    model = models.CharField(max_length=64, blank=True, null=True) 

class Asset(Model): 
    @property 
    def model(self): 
     log.warning('Stop using this') 
     return NewAsset.model 
+0

不幸的是,我现在无法冒险破坏任何现有的功能 – ccs