如何从QuerySet对象获取Django将在数据库中使用的SQL?我正在尝试调试一些奇怪的行为,但我不确定哪些查询会进入数据库.谢谢你的帮助.
是否可以按模型属性过滤Django查询集?
我的模型中有一个方法:
@property
def myproperty(self):
[..]
Run Code Online (Sandbox Code Playgroud)
现在我想通过这个属性过滤,如:
MyModel.objects.filter(myproperty=[..])
Run Code Online (Sandbox Code Playgroud)
这有点可能吗?
django模型的领域有吸气剂和二传手吗?
例如,我有一个文本字段,我需要在它被保存之前进行字符串替换(在管理面板中,对于插入和更新操作),并在每次读取时进行另一个不同的替换.这些字符串替换是动态的,需要在保存和读取时完成.
因为我使用的是python 2.5,所以我不能使用python 2.6 getters/setters.
有帮助吗?
我试图用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属性玩得很好?
我正在使用@Yauhen Yakimovich在此问题中使用的方法:
具有模型字段,该模型字段是对不同模型的计算。
FieldError: Cannot resolve keyword 'rating' into field. Choices are: _rating
Run Code Online (Sandbox Code Playgroud)
当我尝试访问它时,rating模型字段inst被我的rating属性正确隐藏和覆盖,导致错误。
我的模特:
class Restaurant(models.Model):
...
...
@property
def rating(self):
from django.db.models import Avg
return Review.objects.filter(restaurant=self.id).aggregate(Avg('rating'))['rating__avg']
Run Code Online (Sandbox Code Playgroud)
Yauhen的回答中的模型:
class MyModel(models.Model):
__foo = models.CharField(max_length = 20, db_column='foo')
bar = models.CharField(max_length = 20)
@property
def foo(self):
if self.bar:
return self.bar
else:
return self.__foo
@foo.setter
def foo(self, value):
self.__foo = value
Run Code Online (Sandbox Code Playgroud)
关于如何正确隐藏rating字段和定义@property技术的任何想法?
我正在使用查询order_by()来呼叫rating。order_by()在数据库级别,并且不了解我的财产。灵魂,请使用Python进行排序:
sorted(Restaurant.objects.filter(category=category[0]), key=lambda …Run Code Online (Sandbox Code Playgroud) 我有一个保存用户地址的模型.此模型必须具有first_name和last_name字段,因为有人希望将地址设置为收件人(如他的公司等).我想要实现的是:
感谢帮助 :)
在Django中是否可以使用预先加载属性装饰器?
我的代码作为例子
class Player(models.Model):
roles = models.ManyToManyField(Role, related_name='players')
@property
def role(self):
return ", ".join([r.name for r in self.roles.all().order_by('name')])
Run Code Online (Sandbox Code Playgroud)
使用属性输出播放器角色时,每次都会运行查询.
实际上我仍然不知道Django的负载是如何的.我找不到任何关于它的好文档.
谢谢