我只是好奇是否有人知道django的orm是否有充分理由不在模型上调用'full_clean',除非它被保存为模型表单的一部分.
请注意,调用模型的save()方法时,不会自动调用full_clean().如果要为自己手动创建的模型运行一步模型验证,则需要手动调用它. django完全干净的文档
(注意:为Django 1.6更新了引用...以前的django文档也有关于ModelForms的警告.)
有没有充分的理由让人们不想要这种行为?我想如果你花时间为模型添加验证,那么每次保存模型时都需要运行验证.
我知道如何使一切正常工作,我只是在寻找解释.
我正在为我的网站制作一个URL缩短器,我当前的计划(我愿意接受建议)是使用节点ID来生成缩短的URL.因此,理论上,节点26可能是short.com/z,节点1可能是short.com/a,节点52可能是short.com/Z,节点104可能是short.com/ZZ.当用户访问该URL时,我需要反转该过程(显然).
我可以想到一些方法可以解决这个问题,但我猜测有更好的方法.有什么建议?
我使用XPather Browser在HTML页面上检查我的XPATH表达式.
我的最终目标是在Selenium中使用这些表达式来测试我的用户界面.
我有一个HTML文件,其内容与此类似:
<tr> <td>abc</td> <td> </td> </tr>
我想选择一个包含字符串" " 的文本的节点.
使用像"abc"这样的普通字符串是没有问题的.我使用类似的XPATH //td[text()="abc"].
当我尝试使用XPATH时,//td[text()=" "]它什么都不返回.是否有关于" &"的文本的特殊规则?
我有两个松散定义的模型:
class InformationUnit(models.Model):
username = models.CharField(max_length=255)
project = models.ForeignKey('Project')
...
class Project(models.Model):
name = models.CharField(max_length=255)
Run Code Online (Sandbox Code Playgroud)
现在,在视图中,我想注释属于项目的所有InformationUnits,所以我这样做:
p = Project.objects.all().annotate(Count('informationunit')
Run Code Online (Sandbox Code Playgroud)
工作得很好另外,我想知道,在每个项目中,有多少不同的"用户名"参与.也就是说,计算组成一个项目的InformationUnits中有多少个不同的"用户名".我尝试了以下方法,但它只计算InformationUnit的数量,无论用户名如何:
p = Project.objects.all().annotate(Count('informationunit__username')
Run Code Online (Sandbox Code Playgroud)
请注意,username不是对象,而是字符串.有没有一个干净的方法来做到这一点,或者我应该基于循环和意大利面条代码创建一个更复杂的代码:P
非常感谢!
我不知道从哪里开始解决这个问题,但如果我有一个AJAX Web应用程序向服务器发送请求并在数据库上运行长查询(在我的情况下是postgresql),有没有办法停止或终止查询如果仍然在运行,用户刷新页面或关闭会话...等?
我在django中有一个扩展的UserProfile模型:
class UserProfile(models.Model):
user = models.ForeignKey(User, unique=True)
#other things in that profile
Run Code Online (Sandbox Code Playgroud)
还有一个signals.py:
from registration.signals import user_registered
from models import UserProfile
from django.contrib.auth.models import User
def createUserProfile(sender, instance, **kwargs):
profile = users.models.UserProfile()
profile.setUser(sender)
profile.save()
user_registered.connect(createUserProfile, sender=User)
Run Code Online (Sandbox Code Playgroud)
我确保信号通过以下方式注册__init__.py:
import signals
Run Code Online (Sandbox Code Playgroud)
那么应该为每个注册的用户创建一个新的UserProfile,对吧?但事实并非如此.我尝试登录时总是得到"UserProfile匹配查询不存在"错误,这意味着数据库条目不存在.
我应该说我使用django-registration,它提供user_registered信号.
重要应用程序的结构是,我有一个名为"users"的应用程序,我有:models.py,signals.py,urls.py和views.py(以及其他一些在这里无关紧要的事情) ).UserProfile类在models.py中定义.
更新:我将signals.py更改为:
from django.db.models.signals import post_save
from models import UserProfile
from django.contrib.auth.models import User
def create_profile(sender, **kw):
user = kw["instance"]
if kw["created"]:
profile = UserProfile()
profile.user = user
profile.save()
post_save.connect(create_profile, sender=User)
Run Code Online (Sandbox Code Playgroud)
但现在我得到了"IntegrityError":
"列user_id不是唯一的"
编辑2:
我找到了.看起来我以某种方式注册了两次信号.此处描述了解决方法: …
我想知道如何通过intelliJ添加远程git repo,而不是通过git bash.现在,从我在本教程中看到的,它可以完成,但每当我尝试推动时,对话永远不会出现.如果你推到最底层,你可以看到它可以在以前版本的IntelliJ中完成.你怎么能用12版或PyCharm 2.6做到这一点?
出于调试目的,我想使用Django的日志记录机制来记录每个传入的请求,当它"到达"django-rest-framework的门口时.
Djagno以下列方式提供其请求的记录(仅"警告"日志级别及以上)(来自settings.py中的LOGGING部分):
'django.request': {
'handlers': ['mail_admins'],
'level': 'ERROR',
'propagate': False,
},
Run Code Online (Sandbox Code Playgroud)
我想要实现这样的事情(注意:日志级别是DEBUG):
'rest_framework.request': {
'handlers': ['logfile'],
'level': 'DEBUG',
'propagate': False,
},
Run Code Online (Sandbox Code Playgroud)
有没有办法在不将记录器嵌入DRF的源代码的情况下做到这一点?
DRF中是否有某种"Logging Backend"选项我不知道?
我正在做一些教学练习,用XSLT,Javascript和Raphael将XML转换为SVG.我确信这是艰难的方式......但它具有教育意义.
我遇到的问题是创建工具提示.到目前为止,我已经找到了三种方法:
.attr({title: "blah"{)在对象上使用.这是有效的,但拉斐尔并没有正式支持它,我想在工具提示中加入的内容可能有点长,这是人们操作系统在人们读完之前超出工具提示的问题.所以,我想知道的是,向Raphael对象添加工具提示是一种简单可靠的方法,以便当人们鼠标悬停在对象上时弹出工具提示,并在鼠标输出时(但不是之前)消失?