我想为我的JsonResponse添加分页.
我目前正在使用django.http.JsonResponse弹性搜索API生成json.我想添加一个分页功能.我的代码如下:
class ResultQueryView(View):
def get(self, request):
resource_meta = request.GET.getlist("resource_meta")
locations = request.GET.getlist("location")
page = request.GET.get("page")
logger.info("Got search query where resource_meta: {} and locations: {}".format(resource_meta, locations))
results = resource_query(resource_meta, locations)
resource_ids = [r["_id"] for r in results['hits']['hits']]
resources = get_enriched_resources(request.user, Resource.objects.filter(internal_id__in=resource_ids))
serialized = ResourceSerializer(resources, many=True)
return JsonResponse({"resources": serialized.data})
Run Code Online (Sandbox Code Playgroud) 这是我用来显示一些数据的代码。在这段代码中,我有锚标签,我想在点击它时复制该锚标签的链接。这是我使用的代码如下:
<div class="search_item_list clearfix" id="response">
<?php foreach($jobs as $job){
?>
<a class="copy_text" data-toggle="tooltip" title="Copy to Clipboard"
href="<?=base_url().'home/company_profile_detail?id='.$job['company_id'];?>"><span class="icon link"><i class="fa fa-link"></i></span>Copy Link</a>
<?php } ?>
</div>
<script>
$(".copy_text").click(function(e){
e.preventDefault();
var button = $(this);
var text = button.attr("href");
text.select();
$(document).execCommand("copy");
alert("Copied the text ");
})
</script>
Run Code Online (Sandbox Code Playgroud)
我得到 jQuery 作为
text.select 不是函数。
我有一个视图定义(尝试)将模型输出为表.这是我到目前为止:
def output_table(request):
output = My_Model()
return render_to_response('outputtable.html', {'output': output})
Run Code Online (Sandbox Code Playgroud)
这是outputtable.html的HTML:
<html>
<table>
{{ output.as_table }}
</table>
</html>
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?它不起作用.现在,它正确地传递模型,因为如果我将My_Model()更改为My_Model.objects.all()然后将其输出为简单的{{output}},那么它会显示我将在Django shell中看到的内容.
假设我有以下设置:
things = {'foo', 'bar', 'baz'}
Run Code Online (Sandbox Code Playgroud)
我想找出是否存在for 或 bar存在于集合中。我试过了:
>>> 'foo' in things or 'bar' in things
True
Run Code Online (Sandbox Code Playgroud)
这行得通,但是在没有多个or语句的情况下,还有没有更多的Pythonic方式可以执行此检查?我在标准的Python集合操作中找不到能实现此目的的任何东西。使用 {'foo', 'bar'} <= things支票两种,但我想,以检查其中一方。
这是我的日志配置settings.py
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'handlers': {
'console': {
'class': 'logging.StreamHandler',
},
'file': {
'class': 'logging.FileHandler',
'filename': os.path.join(BASE_DIR, 'logs', 'django.log'),
},
},
'loggers': {
'django': {
'handlers': ['file', 'console'],
'level': 'DEBUG',
},
'django.template': {
'handlers': ['file', 'console'],
'level': 'INFO',
},
'App': {
'handlers': ['file', 'console'],
'level': 'DEBUG',
},
},
}
Run Code Online (Sandbox Code Playgroud)
有一种我无法解释的行为:如果我运行,debug=True我可以看到所有 SQL 查询都记录到控制台,但是当debug=False这种情况没有发生时,即使我不更改上面的配置。
为什么是这样?如何在日志配置中确定 SQL 查询是否记录到控制台?
我是Django的新手,对表单处理过程中的验证步骤感到有些困惑.我知道默认情况下需要所有表单字段类型(在我的情况下是ModelForm).我假设Django会引发VaidationError,以防所需的表单字段留空而不调用表单的clean方法.
这就是为什么我没有检查是否在以下clean()方法中设置了任何数据:
def clean(self):
date = self.cleaned_data.get('date')
time_start = self.cleaned_data.get('time_start')
time_end = self.cleaned_data.get('time_end')
user_type = self.cleaned_data.get('user_type')
if Event.objects.filter(user_type=user_type, date=date,
time_start__lt=time_start,
time_end__gt=time_start).exclude(pk=self.instance.pk).count():
raise forms.ValidationError("Overlapping with another event.")
Run Code Online (Sandbox Code Playgroud)
在将所有字段留空的情况下提交表单会导致a
ValueError:不能将None用作查询值.
如果我删除我的clean()方法,我将得到预期ValidationErrors的不填写必填字段 - 这是我所期望的clean()方法仍然存在.
知道什么可能导致这种情况发生吗?如果Django 在调用clean 之前没有检查所需的值,我会感到惊讶.
我试图限制组中的用户无法更改其组无权更改的字段.例如:
class StudentReferral(models.Model):
teacher = models.CharField(max_length=50)
referral_first_name = models.CharField(max_length=50)
referral_last_name = models.CharField(max_length=50)
accepted = models.BooleanField(blank=True)
Run Code Online (Sandbox Code Playgroud)
现在,教师都在一个用户组中,接受或拒绝推荐的人在另一个用户组中.教师的用户群应该只能够编辑以下字段:teacher,referral_first_name和referral_last_name.其他用户组应该只能编辑接受的字段.两个组都应该能够看到所有字段.
是否有内置于django中的内容可以实现这一目标或自定义方式?
模型
class Photo(models.Model):
doc_pic = models.ImageField(upload_to='specialist/', default='', null=True, blank=True, max_length=250)
doctor = models.ForeignKey(Doctor, blank=True, null=True, on_delete=models.SET_NULL, related_name='photos')
Run Code Online (Sandbox Code Playgroud)
我查询照片
temp = Photo.objects.all()
Run Code Online (Sandbox Code Playgroud)
现在我想要保存在医生字段中的医生 ID(对于第一个元素)
print(temp[0].doctor)
Run Code Online (Sandbox Code Playgroud)
我收到了 Doctor 对象。但我想要数字 ID。我怎么能得到那个?
我知道我可以得到它
temp[0].doctor.id
Run Code Online (Sandbox Code Playgroud)
但这会向我想避免的数据库提交另一个查询。
我在测试时遇到问题。这是我第一次编写测试,但我遇到了问题。
我刚刚在应用程序内部创建了一个测试文件夹users,test_urls.py用于测试url。
当我输入:
python manage.py test users
它说:
为别名“默认”创建测试数据库...创建测试数据库时出错:数据库“ database_name”已存在
如果要尝试删除测试数据库“ database_name”,请输入“ yes”,否则请输入“ no”以取消:
这是什么意思?如果输入是会怎样?我会丢失数据库中的所有数据吗?
我有ModelForm的问题.显示字段"test1",但"test2" - 不显示.使用base_fields没有帮助.
# models.py
class Country(models.Model):
name = CharField(max_length=100)
# admin.py
class CountryAdminForm(ModelForm):
test1 = forms.CharField('test1')
def __init__(self, *args, **kwargs):
super(CountryAdminForm, self).__init__(*args, **kwargs)
self.fields['test2'] = forms.CharField('test2')
class Meta:
model = Country
class CountryAdmin(admin.ModelAdmin):
form = CountryAdminForm
admin.site.register(Country, CountryAdmin)
Run Code Online (Sandbox Code Playgroud)
谢谢.
我有以下内容:
class AccountAdmin(models.Model):
account = models.ForeignKey(Account)
is_master = models.BooleanField()
name = models.CharField(max_length=255)
email = models.EmailField()
class Meta:
unique_together = (('Account', 'is_master'), ('Account', 'username'),)
Run Code Online (Sandbox Code Playgroud)
如果我然后在同一个帐户上创建一个与另一个用户名相同的新AccountAdmin,而不是让我在模板中显示错误,则会出现IntegrityError,页面就会中断.我希望在我看来,我可以去:
if new_accountadmin_form.is_valid():
new_accountadmin_form.save()
Run Code Online (Sandbox Code Playgroud)
我该如何克服这个问题.是否有第二种is_valid()类型的方法检查数据库是否违反了该unique_together = (('Account', 'is_master'), ('Account', 'username'),)部分?
我不想在我的视图中捕获IntegrityError.那个域逻辑与表示逻辑混合在一起.它违反DRY,因为如果我在2页上显示相同的表格,我将不得不重复相同的块.它也违反了DRY,因为如果我有两种形式用于同一件事,我必须写相同的,除了:再次.
django ×9
python ×4
django-views ×2
database ×1
django-admin ×1
forms ×1
html-table ×1
jquery ×1
logging ×1
model ×1
modelform ×1
postgresql ×1
set ×1
validation ×1