每次对Django对象调用save()方法时,Django都会执行两个查询--一个是INSERT,另一个是SELECT。在我的例子中,这是有用的,除了一些特定的地方,其中每个查询是昂贵的。关于如何有时声明不需要返回任何对象-不需要返回SELECT的任何想法。
另外,我使用django-mssql连接,这个问题在MySQL上似乎不存在。
编辑: --更好的解释
h = Human()
h.name='John Foo'
print h.id # Returns None, No insert has been done therefore no id is available
h
我正在阅读django文档,看看django在调用save()时如何知道如何执行更新或插入方法。文档说:If the object’s primary key attribute is set to a value that evaluates to True (i.e. a value other than None or the empty string), Django executes an UPDATE. --如果对象的主键属性没有设置,或者更新没有更新,Django将执行插入。
但实际上,当我创建一个模型的新实例并将其"id“属性设置为数据库记录中已经存在的值时。例如:我有
我需要在我的aggregate应用程序中使用一些经常更改的django数据,如果我动态地进行计算,可能会出现一些性能问题。因此,我需要将aggregate结果保存在表中,并在数据更改时更新它们。因为我使用django,所以可能存在一些选项,也可能没有一些选项。例如,我可以使用django signals和一个在发出post_save信号时更新结果的表。另一个选项是materialized views in postgresql或indexed views in MSSQL Server,我不知道如何在django中使用,也不知道django是否支持它们。在django中实现这一点的最佳方法是什
管理员使用以下代码来保存贷款对象
import uuid
from django.db import models
from django.contrib.auth.models import User
from apps.partners.models import Agent
# Create your models here.
class Loan(models.Model):
""" This is our local info about the loan from the LOS """
guid = models
我正在使用python和django开发一个web应用程序,其中我已经构建了一个扩展用户模型的CustomUser模型,还构建了一个注册表单。但问题是,每次我注册一个新用户时,当我返回登录页面并输入用户名和密码时,它总是给出消息“用户名和密码不匹配”。
我在这里粘贴代码:
forms.py
import re
from django.utils.translation import ugettext_lazy as _
from django import forms
from django.contrib.auth.models imp
如何为新模型创建一个带有id的固定链接?
E.g
animal = Animal.create(name: 'cool dog') #creates animal with id of 1 and name of dog
animal.permalink => "1-cool-dog"
如何添加正确的回调以插入id?before_save或after_save不起作用
after_save :update_permalink #or before_save
def update_permalink
self.permalink = "#{i
在Django管理界面中,我想在发布时自动插入登录用户的用户名和博客帖子,目前我让它在下拉列表中显示每个用户以供选择,但显然这不是很好,所以我希望它自动输入此用户名。
下面是我的代码:
models.py
从django.db导入模型从django.contrib.auth.models导入用户
# Create your models here.
class Post(models.Model):
title = models.CharField(max_length=200)
body = models.TextField()
published_date = mo
我有一个Django模型,如下所示:
class LocationMaster(models.Model):
id = models.AutoField(primary_key=True)
open_date = models.DateField(blank=True, null=True)
months_open = models.DecimalField(max_digits=18, decimal_places=2, blank=True, null=True) # Calculated column in SQL Server
maturity = mo
我正在尝试在Django中使用citus data ()。
到目前为止,除了尝试对已保存的模型执行save操作外,几乎所有操作都正常:
NotSupportedError: modifying the partition value of rows is not allowed
这是因为django总是包含更新SQL中的每个字段,即使该字段没有更改。
在Citus中,您必须选择一个字段作为您的分区字段,然后您不能更改它。因此,当我保存一个对象时,它不喜欢分区键在update语句中,即使它没有改变。
我知道您可以将update_fields关键字arg传递给save方法,但我想知道是否可以以某种
我在models.py中使用了以下类:
class Player(models.Model):
id = models.AutoField(primary_key=True)
sport = models.CharField(max_length=3, choices=SPORT_CHOICES)
yid = models.IntegerField()
first = models.CharField(max_length=30)
last = models.CharField(max_length=30)
team = models.CharF
在我的django模型中,我在PostgresSql中使用了以下内容
class Business(models.Model):
location = models.CharField(max_length=200,default="")
name = models.CharField(max_length=200,default="",unique=True)
在我看来,我有:
for b in bs:
try:
p = Business(**b)
p.save()
except Integri
我是Django (和Python)的新手,在开始使用其他人的应用程序之前,我一直在尝试自己解决一些问题。我很难理解Django (或Python)的做事方式在哪里“合适”。我正在尝试解决的是如何调整图像的大小,一旦它被上传。我已经很好地设置了我的模型,并插入到管理员中,图像可以很好地上传到目录中:
from django.db import models
# This is to list all the countries
# For starters though, this will be just United Kingdom (GB)
class Country(models.M
在添加或删除Foo类型的对象时,我需要进行相同的计算。如何检测Foo模型中对象的添加/删除?例如:
from django.db import models
class Foo(models.Model):
...
def save(self):
#do some processing
def delete(self):
#do some processing
我可以避免这两种方法中的代码重复吗?
通过使用信号,您可以实现如下
from django.db import models
from django.db.models.si
这可能是一个低级的问题,但它让我非常困扰(我对django和python都是新手)
在我的django应用程序中,我重写了一个模型的save()方法,以便在文件系统上执行一些交互。
我创建了一个这样的form类:
class AddItemForm(ModelForm):
class Meta:
model = OriginalModel
因此,在我看来,当我调用form.save()时,一切都很正常。
但是,在测试我的应用程序时,我希望能够调用原始的save()方法,以避免创建大量不会使用和需要处理的文件。
我尝试创建一个form.save()方法,以保留原来的for
我试着这么做。不幸的是,我在重写更新时遇到了问题,我不知道如何正确地做到这一点。我在另一个地方这样做的方式是:
if params[:user][:password].blank?
params[:user].delete("password")
params[:user].delete("password_confirmation")
end
# ...
user.save!
所以我试着重写update
def update
if params[:user][:password].blank?
params[:user].delete(
我希望在django中一次将脚本插入到设置中配置的数据库中。此脚本可以重新运行,并且只能插入一次。
我本来要有这样的东西
my_list =[{key:value},{key:value}]
with transaction.atomic():
for item in my_list:
my_model = a_model(my_key=item['key'])
my_model.save()
但我不知道怎么让它运转起来。因为它没有django上下文,给出了一个关于配置不当的django的错误
我有一个模型(膳食),包括许多领域(蛋白质,碳水化合物和脂肪),我最近增加了一个‘名字’CharField。我想让用户为一顿饭输入一个名字,但是如果他们不输入一个名字,我希望根据我在模型中的函数定义自动填充这个名称,这个函数定义只是将食物的名称连接在一个字符串中。我在试着跟踪这个。
现在,如果这顿饭已经存在的话,我所做的一切实际上都很好。但是,如果不存在,则每个项的food_name似乎还没有保存,因为它们是空的。我将super(Meal,self).save()语句放在if not self.name:语句之前,希望这样可以将对象保存到数据库中,这样就可以检索food_names,但是它不能