fut*_*ime 10 python django django-models
我试图用python属性设置一个Django模型,如下所示:
class Post(models.Model):
_summary = models.TextField(blank=True)
body = models.TextField()
@property
def summary(self):
if self._summary:
return self._summary
else:
return self.body
@summary.setter
def summary(self, value):
self._summary = value
@summary.deleter
def summary(self):
self._summary = ''
Run Code Online (Sandbox Code Playgroud)
到目前为止一切顺利,在控制台中我可以与摘要属性进行交互.但是当我尝试用它做任何事情时,就像Post(title="foo", summary="bar")它一样,它会引发一种契合.有没有办法让Django与Python属性玩得很好?
kon*_*iik 12
不幸的是,Django模型在Python属性方面表现不佳.它的工作方式,ORM只识别QuerySet过滤器中的字段实例的名称.
您将无法summary在过滤器中引用,而是必须使用_summary.这很快就会变得混乱,例如在多表查询中引用这个字段,你必须使用类似的东西
User.objects.filter(post___summary__contains="some string")
Run Code Online (Sandbox Code Playgroud)
有关属性支持的更多详细信息,请参阅https://code.djangoproject.com/ticket/3148.
| 归档时间: |
|
| 查看次数: |
7108 次 |
| 最近记录: |