class Status(models.Model):someid = models.IntegerField()value = models.IntegerField()status_msg = models.CharField(max_length = 2000)
so my database look like:
20 1234567890 'some mdg'
20 4597434534 'some msg2'
20 3453945934 'sdfgsdf'
10 4503485344 'ddfgg'
Run Code Online (Sandbox Code Playgroud)
所以我必须获取包含某些值之间的someid的值.所以说吧
val1 = '1234567890'
val2 = '4414544544'
Run Code Online (Sandbox Code Playgroud)
所以我的最终结果应该是包含id = 20的2个条目的列表如何实现这个.
我试过用
list = Status.objects.filter(someid = 20, value < val2, value > val1)
Run Code Online (Sandbox Code Playgroud)
哪个错了?如何解决这个问题.
谢谢.
我需要一些帮助将这个查询放在Django中.我简化了这里的例子,只是简单地切入了这一点.
MyModel(models.Model):
created = models.DateTimeField()
user = models.ForeignKey(User)
data = models.BooleanField()
Run Code Online (Sandbox Code Playgroud)
我想用英语创建的查询听起来像:
给我昨天创建的数据为False的每条记录,在同一范围内,对于给定用户,数据永远不会显示为True
这是一个示例输入/输出,如果不清楚的话.
表值
ID Created User Data
1 1/1/2010 admin False
2 1/1/2010 joe True
3 1/1/2010 admin False
4 1/1/2010 joe False
5 1/2/2010 joe False
Run Code Online (Sandbox Code Playgroud)
输出查询集
1 1/1/2010 admin False
3 1/1/2010 admin False
Run Code Online (Sandbox Code Playgroud)
我要做的是排除#4记录.这是因为在给定范围"昨天"中,对于记录#2中的用户,数据显示为True一次,因此将排除记录#4.
从某种意义上说,似乎有2个查询正在进行中.一个用于确定给定范围内的记录,另一个用于排除与"True"记录相交的记录.
如何使用Django ORM进行此查询?
我正在开发一个目前有很多ManyToMany关系的应用程序(并且最终会有更多关系),我正在尝试用巧妙的方法(阅读:正确的方法)来准确地查询ORM以获取JOINed数据.
以下是我所拥有的以及我需要做的事情的样本.我为伪代码道歉.
ProjectModel:
owner = ForeignKey(User) #just one user
people = ManyToMany(User) #multiple users and theoretically can also contain the owner
Run Code Online (Sandbox Code Playgroud)
现在我要查询的是每个用户的列表,这些用户是当前用户拥有的项目中的"人员".
我没有真正的线索如何做到这一点.__contains似乎并不适合这个...所以我认为我的选择基本上只是查询每个项目并自己进行迭代.但如果我知道如何通过ORM/SQL获得它,那将会更加丰富.
谢谢!
我的数据库有以下架构:
class Product(models.Model):
pass
class Tag(models.Model):
product = models.ForeignKey(Product)
attr1 = models.CharField()
attr2 = models.CharField()
attr3 = models.CharField()
class AlternatePartNumber(models.Model):
product = models.ForeignKey(Product)
Run Code Online (Sandbox Code Playgroud)
换句话说,a Product有很多Tags,而a Product有很多AlternatePartNumbers. Tags是一组属性的集合Product.
给定a中的三个属性Tag,我想选择Product匹配的s(可能多于一个),以及AlternatePartNumber每个产品的所有s.
目前我这样做:
# views.py
results = Tag.objects.
filter(attr1=attr1).
filter(attr2=attr2).
filter(attr3=attr3)
# a template
{% for result in results %}
{% for alternate in result.product.alternatepartnumber_set.all %}
{{ alternate.property }}
{% endfor %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
这可以运行数千个查询,具体取决于匹配的数量.有没有一种优化方法?我试过使用Tag.objects.select_related().filter...,这有些帮助,但它没有帮助.
当我通过tastypie api保存项目时,我遇到了问题.(POST方法)
这是我的api.py代码.
from tastypie.resources import ModelResource, ALL, ALL_WITH_RELATIONS
from tastypie.authorization import DjangoAuthorization
from tastypie.authentication import BasicAuthentication
from tastypie import fields
from apps.clients.models import Client
from django.contrib.auth.models import User
class ClientAPI(ModelResource):
users = fields.ToManyField('apps.clients.api.ClientUserAPI', 'users',related_name='entry',full=True)
class Meta:
queryset = Client.objects.all()
resource_name="clients"
authentication = BasicAuthentication()
authorization = DjangoAuthorization()
filtering={
"users":ALL
}
def hydrate_m2m(self,bundle):
if bundle.data.get("users"):
for user_id in bundle.data["users"]:
new_user = User.objects.get(id=user_id)
bundle.obj.users.add(new_user)
class ClientUserAPI(ModelResource):
class Meta:
queryset = User.objects.all()
resource_name = 'users'
fields = ['username', 'first_name', 'last_name', 'last_login']
authentication = …Run Code Online (Sandbox Code Playgroud) 假设我有这个:
class Parent(models.Model):
id = models.IntegerField(primary_key=True)
children = ListField(EmbeddedModelField('Child'))
class Child(models.Model):
id = models.IntegerField(primary_key=True)
Run Code Online (Sandbox Code Playgroud)
在mongo交互式shell中,使用特定子项查找Parent是如此简单:
db.myapp_parent.find({'children.id': 123})
Run Code Online (Sandbox Code Playgroud)
这是如何在django-nonrel中完成的?
我尝试了一些方法,包括我查找原始查询,但raw_results因为某些原因不是Parent.objects中的方法.
FWIW,这就是我的需求.txt:
git+https://github.com/django-nonrel/django@nonrel-1.3
git+https://github.com/django-nonrel/djangotoolbox@toolbox-1.3
git+https://github.com/django-nonrel/mongodb-engine@mongodb-engine-1.3
Run Code Online (Sandbox Code Playgroud) 我有以下查询:
sales_for_date_for_provider.exclude(sales_or_return='R').values_list('royalty_price', 'conversion_to_usd'))
Run Code Online (Sandbox Code Playgroud)
查询中的royalty_price* 是否可以乘以* conversion_to_usd?还是我需要进行列表理解或深入研究原始SQL?
我有一个像这样的模型
class UserAttributes(models.Model):
uuid = models.CharField(max_length=63, null=True,blank=True)
user = models.OneToOneField(User)
activation_date = models.DateTimeField(null=True, blank=True)
mobile_number = models.CharField(max_length=20, null=True, blank=True)
created_date = models.DateTimeField(auto_now_add=True)
def __str__(self):
return '{0} - {1}'.format(self.user.id, self.user.get_full_name())
def save(self, *args, **kwargs):
if not self.pk:
self.uuid = uuid.uuid4().hex
return super(UserAttributes, self).save(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)
我已经覆盖了保存方法.但是,在我的观点中,当我手动执行类似的操作时
attributes.activation_date = timezone.now()
attributes.save()
Run Code Online (Sandbox Code Playgroud)
字段activation_date的值永远不会写入数据库.这是我第一次遇到这样的问题.没有例外.有人可以指出这里可能是什么情况.
models.py
class Area(models.Model):
area_name = models.CharField(max_length=255, null=False, blank=False)
description = models.TextField(null=False, blank=False)
class AreaPoint(models.Model):
x_axis = models.FloatField(default=0.0)
y_axis = models.FloatField(default=0.0)
area = models.OneToOneField(Area,primary_key=True,on_delete=models.CASCADE)
Run Code Online (Sandbox Code Playgroud)
我尝试了两种方法,但都失败了,请指导我.谢谢
# first method :
# Area.objects.filter(id=304).update(area_name="today is 1", description="today is 1", areapoint__x_axis=111,areapoint__y_axis=222)
# error : Area has no field named 'areapoint__y_axis'
# second method :
obj = Area.objects.get(id=304)
print obj.areapoint.x_axis # 277
print obj.areapoint.y_axis # 65
obj.areapoint.x_axis = 100
obj.areapoint.y_axis = 200
print obj.areapoint.x_axis # 100
print obj.areapoint.y_axis # 200
obj.save()
print obj.areapoint.x_axis # 100
print …Run Code Online (Sandbox Code Playgroud) 我可以使用查询我的模型MyModel.objects.filter(othermodel__nr='foo')。
这很好。
我想获取该字段的verbose_name。
例:
class OtherModel(models.Model):
nr=models.IntegerField(verbose_name='Number')
Run Code Online (Sandbox Code Playgroud)
在上面的示例中,因为我可以访问OtherModel,所以很容易,但是我想使其通用。
如何获取此处在“键”中使用的字段的详细名称?
MyModel.objects.filter(**{key: value})
我搜索解决双下划线的方法。在此示例中,“ othermodel__nr”改为(例如)“ Number”。
在上面的示例中,我知道引用的模型是OtherModel。但是我搜索了适用于任何字符串的解决方案。例如这样:
MyModel.objects.filter(**{str_containing_three_double_underscores: 'foo'})
Run Code Online (Sandbox Code Playgroud)
我搜寻:
get_verbose_name(str_containing_three_double_underscores) --> MyVerboseName
Run Code Online (Sandbox Code Playgroud) django ×10
django-orm ×10
python ×5
api ×1
many-to-many ×1
mongodb ×1
mysql ×1
orm ×1
pymongo ×1
tastypie ×1