在我的模型中,我有:
class Alias(MyBaseModel):
remote_image = models.URLField(max_length=500, null=True, help_text="A URL that is downloaded and cached for the image. Only
used when the alias is made")
image = models.ImageField(upload_to='alias', default='alias-default.png', help_text="An image representing the alias")
def save(self, *args, **kw):
if (not self.image or self.image.name == 'alias-default.png') and self.remote_image :
try :
data = utils.fetch(self.remote_image)
image = StringIO.StringIO(data)
image = Image.open(image)
buf = StringIO.StringIO()
image.save(buf, format='PNG')
self.image.save(hashlib.md5(self.string_id).hexdigest() + ".png", ContentFile(buf.getvalue()))
except IOError :
pass
Run Code Online (Sandbox Code Playgroud)
这首次remote_image变化很有效.
当有人修改remote_image了别名时,如何获取新图像?其次,是否有更好的方法来缓存远程图像?
我对Django很熟悉,但最近注意到on_delete=models.CASCADE模型中存在一个选项,我搜索了相同的文档,但找不到更多:
在Django 1.9中更改:
on_delete现在可以用作第二个位置参数(以前它通常只作为关键字参数传递).它将是Django 2.0中的必需参数.
from django.db import models
class Car(models.Model):
manufacturer = models.ForeignKey(
'Manufacturer',
on_delete=models.CASCADE,
)
# ...
class Manufacturer(models.Model):
# ...
pass
Run Code Online (Sandbox Code Playgroud)
on_delete做什么?(我想如果删除模型需要完成的操作)
怎么models.CASCADE办?(文档中的任何提示)
还有哪些其他选择(如果我的猜测是正确的)?
这个文档在哪里?
对于Django 1.1.
我在models.py中有这个:
class User(models.Model):
created = models.DateTimeField(auto_now_add=True)
modified = models.DateTimeField(auto_now=True)
Run Code Online (Sandbox Code Playgroud)
更新行时,我得到:
[Sun Nov 15 02:18:12 2009] [error] /home/ptarjan/projects/twitter-meme/django/db/backends/mysql/base.py:84: Warning: Column 'created' cannot be null
[Sun Nov 15 02:18:12 2009] [error] return self.cursor.execute(query, args)
Run Code Online (Sandbox Code Playgroud)
我的数据库的相关部分是:
`created` datetime NOT NULL,
`modified` datetime NOT NULL,
Run Code Online (Sandbox Code Playgroud)
这引起关注吗?
附带问题:在我的管理工具中,这两个字段没有显示出来.这是预期的吗?
在Django doc中,
select_related()"跟随"外键关系,在执行查询时选择其他相关对象数据.
prefetch_related()对每个关系进行单独查找,并在Python中进行"加入".
"在python中加入"是什么意思?有人能说明一个例子吗?
我的理解是,对于外键关系,使用select_related; 对于M2M关系,请使用prefetch_related.它是否正确?
Foo.objects.get(pk="foo")
<Foo: test>
Run Code Online (Sandbox Code Playgroud)
在数据库中,我想添加另一个对象,它是上面对象的副本.
假设我的表有一行.我想将第一行对象插入到具有不同主键的另一行中.我怎样才能做到这一点?
运行两个命令之间的区别是什么:
foo = FooModel()
Run Code Online (Sandbox Code Playgroud)
和
bar = BarModel.objects.create()
Run Code Online (Sandbox Code Playgroud)
第二个是否立即BarModel在数据库中创建一个,而for FooModel,save()必须显式调用该方法以将其添加到数据库中?
我想删除一个特定的记录.如
delete from table_name where id = 1;
Run Code Online (Sandbox Code Playgroud)
我怎么能这样做django model呢?
我有一个模型如下.
class TankJournal(models.Model):
user = models.ForeignKey(User)
tank = models.ForeignKey(TankProfile)
ts = models.IntegerField(max_length=15)
title = models.CharField(max_length=50)
body = models.TextField()
Run Code Online (Sandbox Code Playgroud)
我还有一个上述模型的模型表格如下.
class JournalForm(ModelForm):
tank = forms.IntegerField(widget=forms.HiddenInput())
class Meta:
model = TankJournal
exclude = ('user','ts')
Run Code Online (Sandbox Code Playgroud)
我想知道如何设置该坦克隐藏字段的默认值.这是我到目前为止显示/保存表单的函数
def addJournal(request, id=0):
if not request.user.is_authenticated():
return HttpResponseRedirect('/')
# checking if they own the tank
from django.contrib.auth.models import User
user = User.objects.get(pk=request.session['id'])
if request.method == 'POST':
form = JournalForm(request.POST)
if form.is_valid():
obj = form.save(commit=False)
# setting the user and ts
from time import time
obj.ts = int(time()) …Run Code Online (Sandbox Code Playgroud) 模型:
class Person(models.Model):
name = models.CharField(max_length=200)
CATEGORY_CHOICES = (
('M', 'Male'),
('F', 'Female'),
)
gender = models.CharField(max_length=200, choices=CATEGORY_CHOICES)
to_be_listed = models.BooleanField(default=True)
description = models.CharField(max_length=20000, blank=True)
Run Code Online (Sandbox Code Playgroud)
views.py:
def index(request):
latest_person_list2 = Person.objects.filter(to_be_listed=True)
return object_list(request, template_name='polls/schol.html',
queryset=latest_person_list, paginate_by=5)
Run Code Online (Sandbox Code Playgroud)
在模板上,当我打电话给person.gender时,我得到'M'或'F'而不是'男'或'女'.如何显示值('男'或'女')而不是代码(M/F)?
如何将django Model对象转换为包含其所有字段的dict ?理想情况下,所有内容都包含外键和带有editable = False的字段.
让我详细说明一下.假设我有一个类似以下的django模型:
from django.db import models
class OtherModel(models.Model): pass
class SomeModel(models.Model):
normal_value = models.IntegerField()
readonly_value = models.IntegerField(editable=False)
auto_now_add = models.DateTimeField(auto_now_add=True)
foreign_key = models.ForeignKey(OtherModel, related_name="ref1")
many_to_many = models.ManyToManyField(OtherModel, related_name="ref2")
Run Code Online (Sandbox Code Playgroud)
在终端中,我做了以下事情:
other_model = OtherModel()
other_model.save()
instance = SomeModel()
instance.normal_value = 1
instance.readonly_value = 2
instance.foreign_key = other_model
instance.save()
instance.many_to_many.add(other_model)
instance.save()
Run Code Online (Sandbox Code Playgroud)
我想将其转换为以下字典:
{'auto_now_add': datetime.datetime(2015, 3, 16, 21, 34, 14, 926738, tzinfo=<UTC>),
'foreign_key': 1,
'id': 1,
'many_to_many': [1],
'normal_value': 1,
'readonly_value': 2}
Run Code Online (Sandbox Code Playgroud)
回答不满意的问题:
django ×10
django-models ×10
python ×9
caching ×1
database ×1
datetime ×1
dictionary ×1
django-admin ×1
django-forms ×1
django-orm ×1
image ×1