擅长:python、mysql、java
<p>django的ORM的工作方式是,作为<code>model.Field</code>实例的模型类的所有类成员都将映射到数据库中的一个列。在</p>
<p>可能会有不映射到数据库表的模型属性。例如,您可以使用<code>@property</code>。在</p>
<pre><code>class Test(models.Model):
@property
def test(self):
return get_aws_bucket_value(self.id)
@test.setter
def test(self, value):
set_aws_bucket_value(self.id, value)
</code></pre>
<p>您必须自己实现aws getter/setter函数。在</p>
<p>可以将属性用作django管理类中的只读字段。如果getter逻辑需要从远程服务器同步获取数据,请注意在列表视图中使用它,因为这将是一个严重的性能瓶颈。在</p>
<p>如果您希望能够从django管理员为setter设置值,则必须为TestAdmin编写一个自定义的<a href="https://docs.djangoproject.com/en/2.0/topics/forms/modelforms/#modelform" rel="nofollow noreferrer">ModelForm</a>。在</p>
<p>在这里可以说服Django做你想做的事。但是Django的模型和管理是基于ORM的,这意味着使用关系数据库作为持久存储。如果您不想这样做,您会发现自己经常与框架抗争并覆盖框架,而不是从Django的“电池包括在内”中获益。用一个不那么单一和不那么固执己见的框架来解决这个项目,比如Flask而不是Django。在</p>