我在一个模型中有一个字段
class Sample(models.Model):
date = fields.DateField(auto_now=False)
Run Code Online (Sandbox Code Playgroud)
现在,我需要按数据范围过滤对象,例如,2011年1月1日到2011年1月31日之间的所有对象?
谢谢你的帮助!
我正在尝试在Django中创建一个SlugField.
我创建了这个简单的模型:
from django.db import models
class Test(models.Model):
q = models.CharField(max_length=30)
s = models.SlugField()
Run Code Online (Sandbox Code Playgroud)
然后我这样做:
>>> from mysite.books.models import Test
>>> t=Test(q="aa a a a", s="b b b b")
>>> t.s
'b b b b'
>>> t.save()
>>> t.s
'b b b b'
Run Code Online (Sandbox Code Playgroud)
我在期待bbbb
我想更改模型中特定字段的名称:
class Foo(models.Model):
name = models.CharField()
rel = models.ForeignKey(Bar)
Run Code Online (Sandbox Code Playgroud)
应改为:
class Foo(models.Model):
full_name = models.CharField()
odd_relation = models.ForeignKey(Bar)
Run Code Online (Sandbox Code Playgroud)
使用南方最简单的方法是什么?
好吧,我已经尝试了几乎所有的东西,我无法让它工作.
我已经用6种不同的方式编写了这段代码.
我遇到的问题是我写的所有代码都会导致以下行为:(1)Django将生成第二个文件,(2)重命名新文件,在文件末尾添加_ name,然后(3)不传输任何数据,基本上是一个空的重命名文件.'upload_to'路径中剩下的是2个文件,一个是实际图像,一个是图像的名称,但是是空的,当然ImageField路径设置为Django尝试创建的空文件.
如果不清楚,我会试着说明:
## Image generation code runs....
/Upload
generated_image.jpg 4kb
## Attempt to set the ImageField path...
/Upload
generated_image.jpg 4kb
generated_image_.jpg 0kb
ImageField.Path = /Upload/generated_image_.jpg
Run Code Online (Sandbox Code Playgroud)
如果Django没有尝试重新存储文件,我怎么能这样做呢?我真正喜欢的是这个效果......
model.ImageField.path = generated_image_path
Run Code Online (Sandbox Code Playgroud)
......但当然这不起作用.
是的,我已经经历这里的其他问题,如走了这一个,以及对Django的DOC 文件
更新 进一步测试后,它只在Windows Server上的Apache下运行时才会出现此问题.在XP上的"runserver"下运行时,它不会执行此行为.
我很难过.
这是在XP上成功运行的代码...
f = open(thumb_path, 'r')
model.thumbnail = File(f)
model.save()
Run Code Online (Sandbox Code Playgroud) 通常我发现自己想要从Django中的查询集中获取第一个对象,或者None如果没有则返回.有很多方法可以做到这一切都有效.但我想知道哪个是性能最好的.
qs = MyModel.objects.filter(blah = blah)
if qs.count() > 0:
return qs[0]
else:
return None
Run Code Online (Sandbox Code Playgroud)
这会导致两次数据库调用吗?这似乎很浪费.这更快吗?
qs = MyModel.objects.filter(blah = blah)
if len(qs) > 0:
return qs[0]
else:
return None
Run Code Online (Sandbox Code Playgroud)
另一种选择是:
qs = MyModel.objects.filter(blah = blah)
try:
return qs[0]
except IndexError:
return None
Run Code Online (Sandbox Code Playgroud)
这会生成一个数据库调用,这很好.但是需要在很多时候创建一个异常对象,当你真正需要的只是一个简单的if-test时,这是一个非常耗费内存的事情.
如何只使用一次数据库调用并且不使用异常对象搅拌内存?
我已经定义了一个User(最终)继承自的类models.Model.我想获得为此模型定义的所有字段的列表.例如,phone_number = CharField(max_length=20).基本上,我想要检索从Field类继承的任何东西.
我以为我可以通过利用来检索这些inspect.getmembers(model),但它返回的列表不包含任何这些字段.看起来Django已经掌握了这个类,并添加了所有的魔法属性,并删除了实际定义的内容.那么......我怎样才能获得这些领域?它们可能具有为自己的内部目的检索它们的功能吗?
如何在Django中查询/过滤并忽略我的查询字符串的情况?
我有类似的东西并且喜欢忽略以下情况my_parameter:
MyClass.objects.filter(name=my_parameter)
Run Code Online (Sandbox Code Playgroud) 我有一个模特代表我在网站上出现的画作.在主要网页上,我想展示一些:最新的,大多数时间没有访问过的,最受欢迎的一个和随机的一个.
我正在使用Django 1.0.2.
虽然前三个使用django模型很容易拉,但最后一个(随机)给我带来了一些麻烦.我可以在我的视图中对它进行编码,如下所示:
number_of_records = models.Painting.objects.count()
random_index = int(random.random()*number_of_records)+1
random_paint = models.Painting.get(pk = random_index)
Run Code Online (Sandbox Code Playgroud)
在我看来,它看起来并不像我想要的东西 - 这完全是数据库抽象的一部分,应该在模型中.此外,在这里我需要处理删除的记录(然后所有记录的数量不会覆盖我所有可能的键值),可能还有很多其他的东西.
我可以做任何其他选择,最好以某种方式在模型抽象中?
我想创建一个包含2个用户链接的对象.例如:
class GameClaim(models.Model):
target = models.ForeignKey(User)
claimer = models.ForeignKey(User)
isAccepted = models.BooleanField()
Run Code Online (Sandbox Code Playgroud)
但是在运行服务器时出现以下错误:
字段'target'的访问者与相关字段'User.gameclaim_set'发生冲突.将related_name参数添加到'target'的定义中.
字段'claimer'的访问者与相关字段'User.gameclaim_set'发生冲突.将related_name参数添加到'claimer'的定义中.
你能解释一下为什么我会收到错误以及如何修复它们吗?
有没有办法可以打印Django ORM生成的查询?
假设我执行以下语句: Model.objects.filter(name='test')
如何查看生成的SQL查询?
django ×10
django-models ×10
python ×7
database ×1
django-orm ×1
django-south ×1
filtering ×1
performance ×1
slug ×1