这是一个纯Python特定的设计问题:
class MyClass(object):
...
def get_my_attr(self):
...
def set_my_attr(self, value):
...
Run Code Online (Sandbox Code Playgroud)
和
class MyClass(object):
...
@property
def my_attr(self):
...
@my_attr.setter
def my_attr(self, value):
...
Run Code Online (Sandbox Code Playgroud)
Python让我们可以这样做.如果你要设计一个Python程序,你会使用哪种方法?为什么?
是否可以按模型属性过滤Django查询集?
我的模型中有一个方法:
@property
def myproperty(self):
[..]
Run Code Online (Sandbox Code Playgroud)
现在我想通过这个属性过滤,如:
MyModel.objects.filter(myproperty=[..])
Run Code Online (Sandbox Code Playgroud)
这有点可能吗?
我想知道是否有一种方法可以使用动态生成的python属性在查询集上使用Django的filter()property().我有first_name和last_name每个用户,我想根据他们的连接名称进行过滤first_name last_name.(这背后的原因是当我进行自动填充时,我会搜索查询是否与名字,姓氏或部分连接John S匹配John Smith.例如,我想匹配.
我创建了一个属性name:
def _get_name(self):
return self.first_name + " " + self.last_name
name = property(_get_name)
Run Code Online (Sandbox Code Playgroud)
这样我就可以调用user.name以获取连接的名称.
但是,如果我尝试这样做,User.objects.filter(name__istartswith=query)我会收到错误Cannot resolve keyword 'name' into field.
关于如何做到这一点的任何想法?我是否必须在数据库中创建另一个字段来存储全名?
我有一个模型,我想用搜索词过滤,这通常是一个名称.然而,在我的数据库first_name和last_name是两个不同的领域.
例如
search_term = 'Will Sm'
db_persons 记录: first_name = 'Will', last_name = 'Smith'
搜索词将能够检索此记录.
我怎样才能做到这一点?
db_persons.objects.filter(__?__)
更新:
寻找一种连接字段和查询连接结果而无需原始sql的方法