首页 > 解决方案 > 访问作为参数传递的 django 模型属性

问题描述

我将 django 与旧数据库一起使用,我无法更改原始表列。我有类似的模型,它们的字段名称略有不同。以下模型是一个示例。

class EURegister(models.Model):
    record_id = models.AutoField(primary_key=True)
    reg_no = models.CharField(max_length=45, blank=True, null=True)
    company_name = models.CharField(max_length=300, blank=True, null=True)

在某些型号中,reg_no是不同的名称,例如registration_id. 因此,我必须访问作为参数传递的模型属性。但我不能使用它,因为模型不允许使用属性,因为它们是dict键。它给出了以下错误。

TypeError: 'EURegister' object is not subscriptable

标签: django

解决方案


您可以使用getattr(…)[python-doc]

getattr(myeuregister, 'reg_no')

所以getattr(x, 'y')等价于x.y

话虽如此,如果不同的模型(非常)相似,那么将这些模型“合并”到一个模型中可能更有意义。对相同类型的对象使用不同的表通常不是很好的设计。


推荐阅读