这是代码
df = google.history(period='1d', interval="1m") # pandas DataFrame
df = df[['Low']]
df.head()
我是否正确理解倒数第二行相当于df = df['Low']
,只是它重新保存变量而不是将其用作指针?或者['Low']
字典中有一个键,我们将其保存在列表中?
我需要从当前日期开始过滤三天,但出现错误ValueError: unconverted data remains: 05:37:33.204381
from datetime import datetime, timedelta
now = datetime.today()
print(now) # 2023-01-11 05:37:33.204381
end_date = datetime.strptime(now, '%Y-%m-%d') + timedelta(days=3)
getStatus = Orders.objects.filter(created_at__range=[now, end_date])
在帮助下,time.time()
我检查了调用数据库的执行时间。
def checkCleanQueryset(self, **kwargs) -> list:
result_queryset = []
result_queryset = list(kwargs['dict_queryset'])
i = 0
start_time = time.time()
for r in list(kwargs['dict_queryset']):
for key_uuid, value_uuid in r['related_uuid'].items():
try:
currentStore = StoreRelated.objects.get(related_uuid__icontains=key_uuid)
if self.request.user in currentStore.store.user_permission.all():
break
else:
result_queryset.remove(r)
break
except ObjectDoesNotExist:
result_queryset.remove(r)
break
i = i + 1
print("%i --- %s seconds ---" % (i, time.time() - start_time))
return result_queryset
输出print
>>259 --- 0.7878916263580322 seconds ---
也就是说,259次数据库访问需要0.7秒?为什么这么久?因为try
还是icontains
?
@permission_required
我试图限制用户通过 decorator查看模型。也就是说,在管理面板中,我删除了用户权限中的字段storehouse | Форма | Can view Форма
但它会引发错误'StorehouseHomeView' object has no attribute 'user'
视图.py
from django.contrib.auth.decorators import permission_required
class StorehouseHomeView(ListView):
model = Storehouses
template_name = 'storehouse/storehouse_list.html'
context_object_name = 'storehouse'
@permission_required('storehouse.view', raise_exception=True)
def get_context_data(self, *, object_list=None, **kwargs):
context = super().get_context_data(**kwargs)
return context
有一段文字
srt = "
<p><strong>Услуга:</strong> orders.Orders.service</p>
Название - orders.Orders.123name<br>
Заказ номер orders.Orders.id
"
如何编写正则表达式以从文本中提取所有单词name1.name2.name3
即在出口list = ['orders.Orders.service', 'orders.Orders.123name', 'orders.Orders.id']
等处。
有必要value input id="id_clients-name"
通过单击值option
来传递(我将其用作隐藏字段,也许有更好的选择?)。怎么做?datalist
title
$(document).ready(function() {
$('#ajax_phone_{{ widget.name }}').on('change', function() {
$('#id_clients-name').val($('#' + $(this).attr('list')).find('option[title="' + $(this).title() + '"]').text());
});
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" name="clients-name" class="form-control" autocomplete="off" maxlength="150" id="id_clients-name">
<input id="ajax_phone_clients-phone" list="clients-phone" name="clients-phone" value="+7" required="" autocomplete="off" placeholder="Введите название...">
<datalist id="clients-phone">
<option value="32" title="Egor">+79121234567</option>
<option value="31" title="eg">+79216840525</option>
<option value="28" title="SomeText">+79211234567</option>
</datalist>
为什么它不起作用,输入 时keyup
不输出?log
input
控制台错误
jquery-3.2.1.js:5062 [Violation] Added synchronous DOM mutation listener to a 'DOMNodeInserted' event. Consider using MutationObserver to make the page more responsive.
add @ jquery-3.2.1.js:5062
(anonymous) @ jquery-3.2.1.js:4962
each @ jquery-3.2.1.js:362
each @ jquery-3.2.1.js:157
on @ jquery-3.2.1.js:4961
on @ jquery-3.2.1.js:5570
bind @ jquery-3.2.1.js:10168
bindEvents @ hoverzoom.js:1236
init @ hoverzoom.js:1666
applyOptions @ hoverzoom.js:1162
(anonymous) @ hoverzoom.js:1198
html
$(document).ready(function () {
$('#ajax_phone').keyup(function () {
console.log('TEXT')
});
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input list="ajax_phone" name="clients-phone" value="+7" required="" id="id_clients-phone" autocomplete="off">
option
使用jQuery 尝试更新datalist
response = {'is_taken': [{'id': 3, 'name': 'Casio'}, {'id': 5, 'name': 'Casio Edifice'}, {'id': 6, 'name': 'Casio G-Shock'}], 'is_exist': True}
如何迭代list
以is_taken
更新datalist中的数据?
它jsonOptions.forEach(function(response.is_taken)
抛出一个错误Uncaught SyntaxError: Unexpected token '.'
html
$('#ajax_input').keyup(function () {
// create an AJAX call
$.ajax({
data: $(this).serialize(), // get the form data
url: "{% url 'ajax_request' %}?model=device",
// on success
success: function (response) {
if (response.is_exist == true) {
console.log('is_exist = true')
$("#ajax-one_form-device").text(response.is_taken.name);
vardataList = document.getElementById('{{ widget.name }}');
var input = document.getElementById('ajax_input_{{ widget.name }}');
var request = new XMLHttpRequest();
// Обрабатываем изменение состояния для запроса.
// Парсируем JSON
// Перебираем через цикл массив JSON.
jsonOptions.forEach(function(response.is_taken) {
// Создаем новый элемент <option>.
var option = document.createElement('option');
// Устанавливаем значение, используя элементы массива JSON.
option.value = response.is_taken['id'];
option.label = response.is_taken['name'];
// Добавляем элемент <option> к <datalist>.
dataList.appendChild(option);
});
// Обновляем текст заполнителя.
input.placeholder = "e.g. datalist";
// Обновляем текст заполнителя.
input.placeholder = "Loading options...";
// Настраиваем и выполняем запрос.
request.open('GET', 'html-elements.json', true);
request.send();
console.log(vardataList)
console.log(input)
}
else {
$("#ajax-{{ widget.name }}").text('Нет в базе');
}
},
// on error
error: function (response) {
// alert the error if any error occured
console.log(response.responseJSON.errors)
}
});
return false;
});
错误
*TemplateDoesNotExist at /money/
../orders/templates/related/_related_submenu.html*
Template-loader postmortem
Django tried loading these templates, in this order:
Using engine django:
This engine did not provide a list of tried templates.
html
money/templates/include/some.html
{% include '../orders/templates/related/_related_submenu.html' %}>
有一个应用程序money
,其中有必要从另一个应用程序导入模板orders
。如何向应用说明需要在应用money
外取模板?
span
通过我从id
数字创建的循环list
。有必要通过单击特定跨度,将跨度的文本扔到输入中
response['is_taken'] = ['some', 'some2']
html
<script>
... some ajax code ...
var list = ''
for (var i in response.is_taken){
list = list + '<span name="'+(response.is_taken[i])+'" id="'+(i)+'">'+(response.is_taken[i])+'</span> '
}
$('#ajax-service').after('<div id="ajax-service-list" name="ajax-service-list">'+(list)+'</div>')
... some ajax code ...
</script>
<form action="/orders/add/" method="post">
<label for="ajax-service">Услуга:</label>
<input type="text" name="one_form-service" id="ajax-service" class="form-control">
<button type="submit" class="btn btn-primary btn-block">Добавить заказ</button>
</form>
如果它很容易发送,那么document.getElementById('inputId').value = spanId.textContent;
但是如何单击跨度,获取其ID并将其传递给输入?
UPD
下面的代码会引发错误:
Uncaught TypeError: Cannot read property 'addEventListener' of null
at Object.success (?category=simple:135)
at c (jquery-3.6.0.min.js:2)
at Object.fireWith [as resolveWith] (jquery-3.6.0.min.js:2)
at l (jquery-3.6.0.min.js:2)
at XMLHttpRequest.<anonymous> (jquery-3.6.0.min.js:2)
for (var i in response.is_taken) {
list = list + '<span class="badge bg-secondary" name="'+(response.is_taken[i])+'" id="#service'+(i)+'">'+(response.is_taken[i])+'</span> '
}
//console.log("i: "+i);
let elem_input = document.querySelector("ajax-service")
let elem = document.querySelector("service"+i);
elem.addEventListener("click", function(e){
elem_input.value = e.target.getAttribute("name");
});
通过我ajax
添加一个块div
:after
$('#ajax-service').after('<div id="#ajax-service-list" name="#ajax-service-list">'+(response.is_taken)+'</div>')
为什么有了新请求,旧块不会被删除$('#ajax-service-list').remove();
?
html
<script>
$(document).ready(function () {
// catch the form's submit event
$('#ajax-service').keyup(function () {
// create an AJAX call
$.ajax({
data: $(this).serialize(), // get the form data
url: "{% url 'ajax_request' %}",
// on success
success: function (response) {
if (response.is_taken) {
$('#ajax-response').remove();
$('#ajax-service').after('<div id="#ajax-response">'+(response.is_taken)+'</div>')
}
else {
$('#ajax-service').after('<div id="#ajax-response">Нет совпадений</div>')
$('#ajax-response').remove();
}
},
// on error
error: function (response) {
// alert the error if any error occured
console.log(response.responseJSON.errors)
}
});
return false;
});
})
</script>
有两个形成的QuerySet,要形成最终的QuerySet,但只出现在这里和那里。即找到与 Q 的交集。下面是一个带有常规列表的示例,以了解我的意思。
意见
filter = 'sometext'
list1 = Orders.objects.filter(device__in=filter).values_list('related_uuid')
list2 = Clients.objects.filter(name__in=filter).values_list('related_uuid')
conds = Q(related_uuid__in=list1) | Q(related_uuid__in=list2)
return Orders.objects.filter(conds)
# выводит все вхождения list1 и list2, а надо пересечения
c 列出输出示例以便理解:
list1 = [1,2,3]
list2 = [4,5,1]
conds = Q(related_uuid__in=list1) | Q(related_uuid__in=list2)
return Orders.objects.filter(conds)
# вывод только записи 1
# пример не рабочий, просто для понимания, что мне надо найти пересечения
只有值需要打印1
,因为它出现在两者中list
。怎么办Q
?
有两个模型Orders
,并且Clients
在创建时会为每个模型生成相同的模型related_uuid
。也就是说,它们是如此紧密地联系在一起。在网站上搜索时,您需要在两个模型中找到所有出现并显示所有Orders
,包括related_uuid
它在Clients
.
模型.py
class Orders(models.Model):
device = models.CharField(max_length=150)
related_uuid = models.CharField(max_length=22, blank=True)
def __str__(self):
return self.device
class Clients(models.Model):
name = models.CharField(max_length=150)
related_uuid = models.CharField(max_length=22, blank=True)
def __str__(self):
return self.name
视图.py
def getQuery(self):
search_query = self.request.GET.get('filter')
results_query1 = Orders.objects.filter(Q(device__icontains=search_query))
results_query2 = Clients.objects.filter(Q(name__icontains=search_query))
conds = Q(related_uuid__icontains=results_query1) | Q(related_uuid__icontains=related_query2)
search_filter_three = Orders.objects.filter(conds)
return search_filter_three
Orders
按字段选择模型中的所有输入related_uuid
抛出错误django.db.utils.OperationalError: (1241, 'Operand should contain 1 column(s)')
意见
search_query = 'sometext'
search_filter_one = Orders.objects.filter(Q(device__icontains=search_query))
# ... some code ...
search_query = 'anothertext'
search_filter_two = Orders.objects.filter(Q(device__icontains=search_query))
results_query = results + search_filter # <-- схематичный смысл желаемого
如何合并两个样本filter
?
有一种形式,在记录模型时,您必须替换所需的类别。怎么做?
我有一个只有一个字段的表单device
表格.py
class FastForm(forms.ModelForm):
class Meta:
model = Orders
fields = ['device']
有一个模型category
,它有ForeignKey
两个条目pk=1
和pk=2
模型.py
class Orders(models.Model):
device = models.CharField(max_length=150)
category = models.ForeignKey('Category', default=1, on_delete=models.PROTECT)
class Category(models.Model):
category = models.CharField(max_length=150, db_index=True)
问题:
如何在forms.py
类FastForm
中表明有必要在字段中写入category
值pk=2
,而不是default
?
我正在具有过滤功能的页面上进行搜索。有必要传输所选字段以形成正确的queryset
. 做这个的最好方式是什么?我正在创建一个变量str
。urls
但是,如果您需要通过 10 个或更多过滤条件怎么办?如何组织动态传递的变量?
网址
from django.urls import path
from .views import *
urlpatterns = [
path('', OrdersHomeView.as_view(), name='orders_home'),
path('filter/<str:tag>', OrdersFilterView.as_view(), name='orders_filter'),
]
我明白需要通过 完成什么?=
,如php
,但我不明白如何?你可以只处理字符串str
,但也许有一些 django 魔法?
是否有可能通过调用被调用类的模型中的方法来获得get的结果?也就是只需要返回记录,但是没有一些字段
看法
cls = Class.objects.get(related_uuid='xxx')
并且必须在通过 cls 循环输出时,只显示特定字段。这不能在视图本身中指定,只能在模型中指定。如何实施?
楷模
class Orders(models.Model):
device = models.CharField(max_length=150)
serial = models.CharField(max_length=150, blank=True)
related_uuid = models.CharField(max_length=22, blank=True)
什么应该在邮局退回?错误:ValueError:视图 plugins.views.ViewCurrentPlugins 没有返回 HttpResponse 对象。它返回 None 。
视图.py
class ViewCurrentPlugins(DetailView):
model = Plugins
context_object_name = 'plugins'
template_name = 'plugins/plugins_detail_view.html'
context_object_name = 'plugins_item'
def get_context_data(self, *, object_list=None, **kwargs):
context = super().get_context_data(**kwargs)
context['tag'] = self.kwargs['tag']
context['form'] = RelatedPluginForm()
return context
def post(self, request, **kwargs):
form = RelatedPluginForm(request.POST)
related_id = request.POST['related']
if form.is_valid():)
self.plugin = self.get_object()
self.plugin.related.add(related_id)
self.plugin.save()
return
else:
return
我在django中创建了一个表单,但是我需要根据ulr中传递的标签来选择表单
class OrderAddView(CreateView):
tag_url_kwarg = 'tag'
from_class = get_order_form(tag_url_kwarg)
template_name = 'orders/order_add.html'
def get_order_form(self,tag):
print('tag', tag)
if tag == 'fast':
return FastOrdersForm
if tag == 'simple':
return SimpleOrdersForm
如何最好地实施?如何调用类中的方法?
有一个清单:
listt = ['testzxc','someqwe','thisert']
key = 'test'
如果有键条目,则需要删除列表中的值。
例如,可以通过过滤器或 lambda 来完成吗?
这是我的解决方案,通常的解决方案:
listt = ['testzxc', 'someqwe', 'thisert']
new_listt = []
key = 'test'
for item in listt:
if key in item:
next
new_listt.append(item)
print(new_listt)
PS我想通过while
or来做,但是有什么pythonfor
魔法,一些优雅的解决方案吗?