Python / Django:数据库模型中字段“type”的同义词(保留的内置符号)

时间:2012-05-09 12:16:46

标签: python django model

我创建了一个django项目。它包含一个带有“type”属性的模型类。我认为“类型”是描述该字段的最合适的术语,因为它定义了条目的类型。

class Vehicle(models.Model):
    TYPE = (
        (u'car', u'Car'),
        (u'motorcycle', u'Motorcycle'),
        (u'airplane', u'Airplane'),
    )

    type = models.CharField(max_length=100, choices=TYPE)

我不喜欢“亲切”或“类别”,因为它们不像“类型”那样通用。

问题

Assignment to reserved built-in symbol: type
  1. 这是一个警告,这是一个问题吗?
  2. 如果是,我有什么选择?
  3. 你有一个很好的替代术语“类型”吗?

3 个答案:

答案 0 :(得分:12)

  1. 拥有一个影响其中一个的变量名称总是一个坏主意 python's built-ins。它会让读取代码的人感到困惑,他们希望类型具有特定的含义。对于其他用户的可读性不那么重要,它也可以抛弃语法高亮。
  2. 重命名变量。 (真的,这是最好的事情 - 你可以离开它,但现在重命名虽然很容易)
  3. 有很多potential options,可能是classificationcategory。我知道你说你不喜欢category,但我看不出它有什么不通用的呢?
  4. 对于您的特定应用(可能需要了解更多信息)可能会有点过分,但django确实支持model inheritance

答案 1 :(得分:10)

我不同意其他答案。没有必要改变它。

在我看来,混淆的风险很小,因为除了通过实例,你永远不会访问该属性。 my_vehicle.type不容易与(例如)type(my_vehicle)混淆。

答案 2 :(得分:1)

好吧,警告或错误,我总是避免像你这样的情况冒险:)我认为你能做的更好的事情是更改变量名称而不会失去任何意义或凝聚力。您可以将其称为“v_type”,意思是缩短的车辆类型,如果它仅用于该特定类别。如果您将扩展该类,您将使用其他车型扩展它,因此在您的情况下“v_type”将适合。