Django模型字段支持属性吗?

13 浏览
0 Comments

Django模型字段支持属性吗?

我认为用一些代码来提问是最好的方式...我可以这样做吗:

class MyModel(models.Model):    
    foo = models.CharField(max_length = 20)    
    bar = models.CharField(max_length = 20)  
    def get_foo(self):  
        if self.bar:  
            return self.bar  
        else:  
            return self.foo  
    def set_foo(self, input):  
        self.foo = input  
    foo = property(get_foo, set_foo)  

还是我必须这样做:

class MyModel(models.Model):
    _foo = models.CharField(max_length = 20, db_column='foo')
    bar = models.CharField(max_length = 20)
    def get_foo(self):
        if self.bar:
            return self.bar
        else:
            return self._foo
    def set_foo(self, input):
        self._foo = input
    foo = property(get_foo, set_foo)

注意:通过向模型字段传递db_column,您可以将列名保留为数据库中的'foo'。这在您在现有系统上工作且不想无缘无故进行数据库迁移时非常有帮助。

0