我需要将前导零添加到整数以生成具有已定义数字位数的字符串($ cnt).将这个简单函数从PHP转换为Python的最佳方法是什么:
function add_nulls($int, $cnt=2) {
$int = intval($int);
for($i=0; $i<($cnt-strlen($int)); $i++)
$nulls .= '0';
return $nulls.$int;
}
Run Code Online (Sandbox Code Playgroud)
有没有可以做到这一点的功能?
我需要contrib.auth
通过确保电子邮件字段条目是唯一的来修补标准用户模型:
User._meta.fields[4].unique = True
Run Code Online (Sandbox Code Playgroud)
代码中最好的位置在哪里?
我想避免使用数字字段[4].用户字段['email']更好,但字段不是字典,只是列表.
另一个想法可能是打开一个新票证并上传一个带有新参数的补丁settings.py
:
AUTH_USER_EMAIL_UNIQUE = True
Run Code Online (Sandbox Code Playgroud)
有关在Django用户模型中实现电子邮件地址唯一性的最正确方法的任何建议吗?
我想通过使用带注释的值更新queryset中的所有行.
我有一个简单的模型:
class Relation(models.Model):
rating = models.IntegerField(default=0)
class SignRelation(models.Model):
relation = models.ForeignKey(Relation, related_name='sign_relations')
rating = models.IntegerField(default=0)
Run Code Online (Sandbox Code Playgroud)
我想要解释这段代码:
for relation in Relation.objects.annotate(total_rating=Sum('sign_relations__rating')):
relation.rating = relation.total_rating or 0
relation.save()
Run Code Online (Sandbox Code Playgroud)
并使用以下内容更新一个SQL请求:
Relation.objects.update(rating=Sum('sign_relations__rating'))
Run Code Online (Sandbox Code Playgroud)
不起作用:
TypeError: int() argument must be a string or a number, not 'Sum'
Run Code Online (Sandbox Code Playgroud)
要么
Relation.objects.annotate(total_rating=Sum('sign_relations__rating')).update(rating=F('total_rating'))
Run Code Online (Sandbox Code Playgroud)
也不起作用:
DatabaseError: missing FROM-clause entry for table "relations_signrelation"
LINE 1: UPDATE "relations_relation" SET "rating" = SUM("relations_si...
Run Code Online (Sandbox Code Playgroud)
为此可以使用Django的ORM吗?没有关于在文档中一起使用update()和annotate()的信息.
我知道os.nice()
它对于父进程来说是完美的,但是我需要对子进程进行处理.我找到了这样做的方法,但似乎不是很方便和过分:
os.system("renice -n %d %d" % ( new_nice, suprocess.pid ) )
Run Code Online (Sandbox Code Playgroud)
并且它在返回后不会返回得到很好的水平.
在python中有更简洁的方法来管理子进程吗?
我需要找到如何指定一种初始芹菜任务,它将以特别定义的方式启动所有其他任务.这个初始任务应该在芹菜服务器启动时立即运行,永远不会再运行.
我有很多django_mark_safe
错误
>> Issue: [B703:django_mark_safe] Potential XSS on mark_safe function.
Severity: Medium Confidence: High
Location: ...
More Info: https://bandit.readthedocs.io/en/latest/plugins/b703_django_mark_safe.html
54 return mark_safe(f'<a href="{url}" target="_blank">{title}</a>')
>> Issue: [B308:blacklist] Use of mark_safe() may expose cross-site scripting vulnerabilities and should be reviewed.
Severity: Medium Confidence: High
Location: ...
More Info: https://bandit.readthedocs.io/en/latest/blacklists/blacklist_calls.html#b308-mark-safe
54 return mark_safe(f'<a href="{url}" target="_blank">{title}</a>')
Run Code Online (Sandbox Code Playgroud)
我很好奇是否有一种方法可以跳过或忽略这些行吗?我知道使用mark_safe
可能会很危险,但是如果我想冒险怎么办?例如,此方法是在Django admin中显示自定义链接的唯一方法,所以我不知道其他任何选项,如果没有mark_safe
我需要找到在任何中间子任务引发异常后如何继续使用immutable = True子任务执行链的方式。
我已经阅读了该主题和此问题的评论。现在,这些错误已修复,但是我需要实现相反的行为。我不需要停止执行链条。可能还有另一种方式可以以任何顺序依次执行独立任务列表而不在它们之间发送结果吗?而且我需要异步执行它们,因为在这种情况下,django-celery将存储有关每个任务的统计信息。
一种解决方案是使用以下方法覆盖所有子任务的主体:
try:
...
except Exception, e:
logger.error('Exception raised: %s' % e)
raise e
Run Code Online (Sandbox Code Playgroud)
但是在这种情况下,所有子任务都将以SUCCESS状态执行,并且在django-celery管理界面中对异常的回溯将毫无用处。
我需要在管理界面网格列中生成外部链接,但它们显示为html代码:
<a href="http://www.site.com/">site</a>
Run Code Online (Sandbox Code Playgroud)
管理界面将我的链接翻译为html-entities,并且它们不显示为正确的链接.是否有可能在那里显示外部链接,而不是HTML代码?
我认为list_display_links不能用于此目的.
谢谢!
我需要使用它自己的表和所有没有Django继承机制的列来定义现有模型的extact副本.否则它使用OneToOne关系并保留父表中的所有重复字段,我绝对不需要.我只是想避免为我的第二个模型重复模型字段和方法定义.
有什么建议?
现在我有这个代码:
attitude = request.REQUEST['attitude']
if attitude == 'want':
qs = qs.filter(attitudes__want=True)
elif attitude == 'like':
qs = qs.filter(attitudes__like=True)
elif attitude == 'hate':
qs = qs.filter(attitudes__hate=True)
elif attitude == 'seen':
qs = qs.filter(attitudes__seen=True)
Run Code Online (Sandbox Code Playgroud)
最好动态定义"attitudes__xxxx"的名称.有没有办法做到这一点?
谢谢!
我需要使用蒙版生成上传图像的名称
images/{{ uploaded_image.id }}.jpg
Run Code Online (Sandbox Code Playgroud)
我认为最好的方法是FileField.upload_to属性,但它写在这里:
在大多数情况下,此对象尚未保存到数据库,因此如果它使用默认的AutoField,则它可能还没有其主键字段的值.
在我的情况下,在save()方法中保存对象后重命名文件会更好吗?
我没有在python中出现过.我需要用范围限制来定义字段'year'.现在我正在使用此代码,但我认为存在缩短的方法.
YEAR_CHOICE = []
for year in range(2020,1899,-1):
YEAR_CHOICE += [(year, year)]
year = models.PositiveSmallIntegerField('Year', choices=YEAR_CHOICE, default=0)
Run Code Online (Sandbox Code Playgroud)
是否有任何方法可以在一行中定义2元组?也许我可以用其他方式制作我需要的东西?谢谢!