我有一个字典,每个键有多个值.我使用以下代码添加值:
d.setdefault(key, []).append(values)
Run Code Online (Sandbox Code Playgroud)
键值对应关系如下:
a -el1,el2,el3
b -el1,el2
c -el1
Run Code Online (Sandbox Code Playgroud)
我需要循环通过字典并写入excel文件:
Column 1 Column 2
a el1
el2
el3
b el1
el2
c el1
Run Code Online (Sandbox Code Playgroud)
要在excel文件中写入,我使用xlsxwriter.我需要帮助通过字典单独循环,因为在写完密钥后我不需要再写它,直到我完成所有相应的值.
我有2种型号,Company并Product与Product有一个ForeignKey到Company
class Product(Meta):
company = models.ForeignKey(
Company,
related_name='products',
on_delete=models.CASCADE
)
Run Code Online (Sandbox Code Playgroud)
我做了以下过滤:
company = Company.objects.filter(account=account, pk=company_pk)
if not company:
raise Http404
product = Product.objects.filter(company=company, pk=product_pk)
if not product:
raise Http404
return product
Run Code Online (Sandbox Code Playgroud)
我有以下错误:
The QuerySet value for an exact lookup must be limited to one result using slicing.
Run Code Online (Sandbox Code Playgroud)
company_pk而且product_pk只是变量.如果我删除了产品过滤器,则没有错误.
我认为它发生是因为公司结果是一个QuerySet并作为参数被推送 Product.objects.filter
我想覆盖Django(2.01)小部件模板,因为我需要为每个输入,标签添加类,并以不同的方式定位它们
app
- templates
- app
- django
- forms
- widgets
- input.html
Run Code Online (Sandbox Code Playgroud)
app
- templates
- django
- forms
- widgets
- input.html
Run Code Online (Sandbox Code Playgroud)
或模板项目目录:
- templates
- django
- forms
- widgets
- input.html
Run Code Online (Sandbox Code Playgroud)
它们都不起作用(即使我这是在文档中推荐的方式,也是我在stackoverflow上看到的答案),它仍然从默认加载.
作为一般的小部件的模板,我宁愿把他们的模板项目目录,但是从我的芦苇默认情况下,小部件安装的应用程序只搜索.
我正在尝试使用vuejs创建一个手风琴.
我在网上找到了一些例子,但我想要的是不同的.对于搜索引擎优化的目的,我使用"是"和"内联模板",所以手风琴是一种静态的,没有在Vuejs中完全创建.
我有2个问题/疑问:
1)我需要根据用户交互(点击)在组件上添加一个"is-active"类,因此我收到以下错误.
属性或方法"contentVisible"未在实例上定义,但在呈现期间引用.确保在数据选项中声明反应数据属性.
这可能是因为我需要在实例级别设置它.但是"contentVisible"具有每个组件不同的值(true或false).
所以我想在实例级别使用一个"contentVisible"数组和一个props(通过实例传递)和子节点上的自定义事件来更新实例值.
2)可以工作,但它是一个静态数组.如何制作动态数组(不知道项目组件的数量)?
<div class="accordion">
<div>
<div class="accordion-item" is="item" inline-template :class="{ 'is-active': contentVisible}" >
<div>
<a @click="toggle" class="accordion-title"> Title A1</a>
<div v-show="contentVisible" class="accordion-content">albatros</div>
</div>
</div>
<div class="accordion-item" is="item" inline-template :class="{ 'is-active': contentVisible}" >
<div>
<a @click="toggle" class="accordion-title"> Title A2</a>
<div v-show="contentVisible" class="accordion-content">lorem ipsum</div>
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
var item = {
data: function() {
return {
contentVisible: true
}
},
methods: {
toggle: function(){
this.contentVisible = !this.contentVisible
}
}
}
new Vue({
el:'.accordion',
components: {
'item': …Run Code Online (Sandbox Code Playgroud) 对于搜索,我想使用PostgreSQL的搜索矢量;
我写了一个自定义查询方法:
def search(self, text):
search_vectors = (
SearchVector('name', weight='A', config='english') +
SearchVector('short_description', weight='B', config='english') +
SearchVector('description', weight='C', config='english')
)
search_query = SearchQuery(text)
search_rank = SearchRank(search_vectors, search_query, weights=[0.2, 0.4, 0.6, 1])
return self.annotate(rank=search_rank).filter(rank__gte=0.2).order_by('-rank').
Run Code Online (Sandbox Code Playgroud)
有2个“问题”。例如,如果搜索“ Eric”名称,则:
我有点理解为什么它会失败,但是我不知道如何实施这些修复程序。
如果某个字段有小部件错误,我如何访问?
使用默认我试过:
{% if widget.attributes.has_errors %} or {% if widget.has_errors %}
Run Code Online (Sandbox Code Playgroud)
但是没有用.
我使用自定义窗口小部件模板,我想使用自定义窗体字段并覆盖默认字段.
我知道clean方法存在,但我不知道如何向我的小部件推送我想要的动态(非默认)数据/属性.
我试过了:
class AWidget(forms.Widget):
def get_context(self, name, value, attrs):
context = super().get_context(name, value, attrs)
has_errors = context['widget']['attrs'].pop('has_errors', None)
context['widget']['has_errors'] = has_errors
Run Code Online (Sandbox Code Playgroud)
它适用errors但我不知道是否是最好的选择加上我想从Form Field传递其他值/属性,我认为最好尝试覆盖Form Field但我不确切知道如何.
还使用以下方式访问各个属
{{ widget.attrs.maxlength }} or {{ widget.attrs.items.maxlength }}
Run Code Online (Sandbox Code Playgroud)
即使在for循环中加入也是如此
我知道我可以添加一个带有一类错误的父div:
<div class="{% if form.field.errors %}pass_error{% endif %}">
{{ form.field }}
</div>
Run Code Online (Sandbox Code Playgroud)
但是,这意味着css级别的重大变化.
我已经使用自定义小部件覆盖所有Django小部件,错误我不仅需要更改边框颜色,而是显示或不显示小部件模板的不同元素以及其中一些的位置发生变化.
我已经修改了基于窗口小部件以添加错误,但是我希望通过从字段传递到窗口小部件,以及根据错误类型的参数,以更优雅的方式在字段级别执行此操作.
所以我的问题是我需要覆盖从字段传递到窗口小部件错误和其他变量?
我想从多个数据库复制数据,处理它们,然后将它们移动到主数据库。所有数据库都具有相同的架构。
即使我打开和关闭数据库,peewee 总是连接到同一个数据库(列表中的第三个)并且不遵守连接顺序。
databases = [spie_db, opticsorg_db, phcom_db]
# map to a dictionary the values from the record
def mapping(record):
comp_d = {'name': record.name,
'address': record.address,
'country': record.country,
'website': record.website,
'domain': record.domain
}
return comp_d
def merge_data():
company_list = []
for database in databases:
database.connect()
# cycle trough db
for record in Company.select():
# append each record to the list
company_list.append(mapping(record))
database.close()
return company_list
# get data from the other databases
companies = merge_data()
# the merge database
db.connect()
# …Run Code Online (Sandbox Code Playgroud) 我有两个型号分类和产品.
例:
models.py
class Product:
categories = models.ManyToManyField(Category)
name = models.CharField(max_length=255)
class Category:
categories = models.ForeignKey(self)
name = models.CharField(max_length=255)
Run Code Online (Sandbox Code Playgroud)
作为表单我使用ModelForm:
class ProductForm(ModelForm):
class Meta:
model = Product
fields = ['categories', 'name', 'short_description', 'description']
widgets = {
'categories': MyWidget,
}
Run Code Online (Sandbox Code Playgroud)
我想要实现的目标:
我想实现条件选择(窄选项)在产品表单创建上:
用户选择1级类别(A1,C1).如果父母有孩子,他的孩子会出现一个新的选择框(2级A2)
选项我想:
实用,假设我有7个选择框,每个框的值都是:
如何告诉Django浏览器提交(以及其他数据)发送给ManyToMany的所有三个中的最后一个Child
我可以用Javascript收集它们,但我必须告诉Django获取这些数据,这就是你需要的. …
我有以下代码:
def save()
super().save(*args, **kwargs)
try:
transaction.on_commit(lambda: c_task.delay(a, b, self.pk))
except Exception as e:
print(e)
@app.task(bind=True, name='c_task', max_retries=4, soft_time_limit_exception=300)
def c_task(self, a, b, i):
from .models import ModelA
try:
json_data = entity(a,b,i, const)
.....
except Exception as e:
raise self.retry(exc=e, countdown=exponential_backoff(self))
Run Code Online (Sandbox Code Playgroud)
如果Redis服务器失败,我会收到和OperationalError。我尝试像以前一样使用Celery OperationalError或通用异常来捕获它。
该行仍在执行并引发错误。如果Redis失败,我不希望一切都失败,因为我的代码有一个“解决方法”,但我无法捕获错误。
追溯:
transaction.on_commit(lambda: c_task.delay(a, b, self.pk))
\lib\site-packages\celery\app\task.py in delay
return self.apply_async(args, kwargs)
lib\site-packages\celery\app\task.py in apply_async
**options
\lib\site-packages\celery\app\base.py in send_task
amqp.send_task_message(P, name, message, **options)
\lib\contextlib.py in __exit__
self.gen.throw(type, value, traceback)
\lib\site-packages\kombu\connection.py in _reraise_as_library_errors
sys.exc_info()[2])
\lib\site-packages\vine\five.py in reraise
raise …Run Code Online (Sandbox Code Playgroud) 我想使用http auth,但也使用gunicorn的反向代理.
对于http auth,我使用:
location = admin.html {
auth_basic 'Login Required'
auth_basic__use_file etc/nginx/.htpasswd;
}
Run Code Online (Sandbox Code Playgroud)
对于gunicorn,代理反向我发现:
try_files $uri @gunicorn;
Run Code Online (Sandbox Code Playgroud)
我如何将两者结合起来?
django ×6
python ×4
django-forms ×2
python-3.x ×2
arrays ×1
celery ×1
database ×1
dictionary ×1
gunicorn ×1
javascript ×1
nginx ×1
peewee ×1
sqlite ×1
vue.js ×1