我试图在Django中创建一个自定义字段,它将采用十进制货币值(例如:£1.56)并将其作为整数(例如:156)保存在数据库中以存储货币值.
这是我到目前为止(我已经把固定值测试)
class CurrencyField(models.DecimalField):
__metaclass__ = models.SubfieldBase
def get_internal_type(self):
return 'PositiveIntegerField'
def to_python(self, value):
print "CurrentField to_python"
return Decimal(value)/100
def get_db_prep_value(self, value, connection, prepared=False):
print "CurrentField get_db_prep_value"
if value is None:
return value
print type(value)
return int(value*100)
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,get_db_prep_value当我使用此字段保存模型时,永远不会调用该方法.该to_python方法工作正常(如果我手动输入数据库中的值将返回正确的小数),但它永远不会保存正确的值.
我也尝试过使用get_prep_value,结果相同.
如何保存正确的值?
我有一个简单的组件,您单击一个按钮,它使用提取来调用API并记录结果:
class App extends Component {
constructor(props) {
super(props);
this.state = {isLoading: false};
this.handleClick = this.handleClick.bind(this);
}
handleClick() {
this.setState({isLoading: true});
return fetch('https://api.github.com/users/londonappdev')
.then(res => {
return res.json();
})
.then(data => {
console.log(data);
this.setState({isLoading: false})
});
}
render() {
return (
<div className="App">
<button onClick={this.handleClick}>Click</button>
</div>
);
}
}
Run Code Online (Sandbox Code Playgroud)
我想测试isLoading设置为true当请求正在进行中,然后设置为false一旦请求完成.
我的测试看起来像这样:
it('sets isloading to true while loading', () => {
global.fetch = jest.fn().mockReturnValue(Promise.resolve({
ok: true,
json: () => Promise.resolve({'user': 'test'})
}));
const c = …Run Code Online (Sandbox Code Playgroud) 我想将RadioButton的可见性设置为INVISIBLE或GONE.由于某种原因,这是行不通的.
RadioButton myRadioButton = (RadioButton) findViewById(R.id.my_radio_button_id);
myRadioButton.setVisibility(View.GONE);
Run Code Online (Sandbox Code Playgroud)
要么
myRadioButton.setVisibility(View.INVISIBLE);
Run Code Online (Sandbox Code Playgroud)
没有错误返回,它只是没有做任何事情.
不过我在RadioGroup上尝试了这个
RadioGroup myRadioGroup = (RadioGroup) findViewById(R.id.radiogroup_quiz_answers);
myRadioGroup.setVisibility(View.INVISIBLE);
Run Code Online (Sandbox Code Playgroud)
它可以很好地隐藏整个组.有没有办法隐藏其中一个RadioButtons?我有一组3个问题的答案,但在某些情况下我想隐藏最后一个问题.
我有一个奇怪的问题.我有一个视图,它通过Django REST Framework中的序列化程序和分页器返回一些JSON.
我的视图看起来像这样(返回Countries模型中的所有对象):
@api_view(['GET'])
def country_list(request):
"""
List all countries
"""
if request.method == 'GET':
geoname_ids = request.QUERY_PARAMS.get('geoname_ids')
queryset = Countries.objects.all()
paginator = Paginator(queryset, request.QUERY_PARAMS.get('limit'))
page = request.QUERY_PARAMS.get('page')
try:
countries = paginator.page(page)
except PageNotAnInteger:
#If page is not an integer, deliver first page.
countries = paginator.page(1)
except EmptyPage:
#If page is out of range
#Delivery last page of results
countries = paginator.page(paginator.num_pages)
serializer_context = {'request': request}
serializer = PaginatedCountrySerializer(countries, context=serializer_context)
return Response(serializer.data)
Run Code Online (Sandbox Code Playgroud)
这很好用.
但是我需要返回一个具有特定ID的国家/地区,我正在尝试这样做:
@api_view(['GET'])
def country_list(request):
"""
List …Run Code Online (Sandbox Code Playgroud) 我正在查看扩展传单文档以添加自定义控件。
它包含以下代码片段,作为添加简单水印控件的示例:
L.Control.Watermark = L.Control.extend({
onAdd: function(map) {
var img = L.DomUtil.create('img');
img.src = '../../docs/images/logo.png';
img.style.width = '200px';
return img;
},
onRemove: function(map) {
// Nothing to do here
}
});
L.control.watermark = function(opts) {
return new L.Control.Watermark(opts);
}
L.control.watermark({ position: 'bottomleft' }).addTo(map);
Run Code Online (Sandbox Code Playgroud)
为什么将控件同时分配给大写(L.Control.Watermark)和小写L.control.watermark变量?扩展JavaScript库时,这是通用约定吗?
我正在尝试将tiptap 与Vue.js 结合使用,并采用<script setup>创建单文件组件(SFC)的方法。
文本编辑器.vue
<template>
<editor-content :editor="editor" class="editor" />
</template>
<script lang="ts" setup>
import { useEditor, EditorContent } from '@tiptap/vue-3'
import StarterKit from '@tiptap/starter-kit'
const props = defineProps({
modelValue: {
type: String,
default: "",
}
})
const emit = defineEmits(['update:modelValue'])
const editor = useEditor({
content: props.modelValue,
extensions: [StarterKit],
onUpdate: ({editor}) => {
let content = editor.getHTML()
emit('update:modelValue', content)
}
})
</script>
Run Code Online (Sandbox Code Playgroud)
然后我像这样使用这个组件:
<template>
<text-editor v-model="myModel.content" />
</template>
Run Code Online (Sandbox Code Playgroud)
这在定义后<text-editor>加载时有效。 myModel.content
但是,如果从我的数据库 API 设置了<text-editor>“loads …
我试图使用yii检查数据库表中是否已存在记录.阅读文档说它有一个方法exists()可以使用findByAttributes()或find()来代替查找记录.使用较少内存的好处是因为它不必检索记录,只检查它是否存在.
当我尝试实现这样的方法时:
if (UserRsvp::model()->exists(array("user_id"=>$userId))) {
echo 'Exists';
} else {
echo "Doesn't exist";
}
Run Code Online (Sandbox Code Playgroud)
我收到一个错误:*CException:未定义属性"CDbCriteria.user_id".*
如果我尝试使用findByAttributes方式它可以正常工作(但我想使用exists()来提高效率)
if(UserRsvp::model()->findByAttributes(array("user_id"=>$userId))) {
echo 'Exists';
} else {
echo "Doesn't exist";
}
Run Code Online (Sandbox Code Playgroud)
我是否在使用exists()方法做错了什么?
我正在使用 Ionic 框架构建 Cordova 应用程序。我使用angular-localForage作为应用程序持久存储的本地数据库。
在开发过程中,我正在 Windows 10 上使用 Google Chrome 45.0.2454.85 m 测试我的应用程序。angular-localForage 的版本为 1.2.3,localForage 的版本为 1.2.4。
我可以设置和检索数据没问题。要设置我使用的数据:
$localForage.setItem(myKey, myData).then(myCallbackFunction);
Run Code Online (Sandbox Code Playgroud)
根据docs,如果可用,localForage 应该使用 IndexedDB,而对于不可用的浏览器,则回退到 WebSQL。我可以通过查看 Chrome 开发人员工具中的资源看到它正在将我的数据存储在 WebSQL 中。
如果我将此代码放在我的控制器中,我会收到一条消息,指出 IndexedDB 可用:
if (!window.indexedDB) {
window.alert("Your browser doesn't support a stable version of IndexedDB. Such and such feature will not be available.");
} else {
window.alert("IndexedDB available.");
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,当我有 IndexedDB 可用时,为什么它在 Chrome 中使用 WebSQL?
我正在使用 Jest 测试在我的 React 应用程序中调用 API。
我正在测试的代码是:
const createItem = (data) => {
let formData = buildForm(data);
return fetch(URL, {
method: 'POST',
body: formData
});
};
Run Code Online (Sandbox Code Playgroud)
我想确认该buildForm函数正确地将 转换data为FormData对象。
我的测试是这样的:
it('creates item using api', () => {
let data = {name: 'test name'};
return createItem(data)
.then(() => {
let expForm = new FormData();
expForm.append('name', data.name);
expect(global.fetch).toHaveBeenCalledWith(URL, {
method: 'POST',
body: expForm
});
});
});
Run Code Online (Sandbox Code Playgroud)
问题是,无论我expForm在测试中附加了哪些字段,此测试都会通过。似乎toHaveBeenCalledWith实际上并没有比较 的值,body只是检查它是否是一个FormData对象。
如何测试传递给 …
使用jQuery和JavaScript我正在尝试编写一些设置一个或多个小部件的代码.小部件接受文本,input并ul在button单击a 时将其添加到a .
然后将项目添加到ul,单击侦听器是一个设置,用于在单击时删除特定项目.
代码如下所示:
function WidgetThing(className) {
var items = [];
function removeItem(e) {
var idx = parseInt($(e.target).attr('data-index'));
items.splice(idx, 1);
updateItems();
}
function updateItems() {
var ul = $('.' + className + ' .items ul');
ul.html('');
items.forEach(function(item, idx) {
ul.append('<li data-index="' + idx + '">' + item + '</li>');
});
ul.on('click', 'li', removeItem);
}
$('.' + className + ' .add-button').click(function(e) {
var input = $('.' + className + ' input');
items.push(input.val()); …Run Code Online (Sandbox Code Playgroud)下划线在此行中有什么相关性('密码')?
password = models.CharField(_('password'), max_length=128)
我查看了Django文档,并指出模型字段定义中的第一个参数是'详细名称',但是在这种情况下我无法找到下划线的相关性?
我正在查看的整个文件是:https: //github.com/django/django/blob/master/django/contrib/auth/models.py
谢谢,马克
我有一个设置为的datetime对象,2014-02-24 19:00:00+00:00我相信默认设置为UTC(通过Django管理面板).
这次实际上是非洲/约翰内斯堡,所以我把它转换成这样:
local_timezone= pytz.timezone("Africa/Johannesburg")
local_time_start = self.start_time_unix.replace(tzinfo=local_timezone)
Run Code Online (Sandbox Code Playgroud)
这将输出 2014-02-24 19:00:00+01:30
现在我想将其存储为转换后的UTC时区,所以我这样做:
utc_time = local_time_start.astimezone(utc)
Run Code Online (Sandbox Code Playgroud)
由于某种原因,这个输出2014-02-24 17:30:00+00:00.应该输出的时间是17:00:00多少30分钟来自何处?
基本上我试图将来自django管理面板的给定输入作为模型time_zone字段的本地时区,但将其存储为UTC.
有没有更好的方法来解决这个问题?Django文档解释了如何转换用户本地时区,但我需要根据模型属性中的时区进行转换.
javascript ×5
django ×4
python ×4
jestjs ×2
reactjs ×2
android ×1
android-view ×1
angularjs ×1
date ×1
datetime ×1
django-1.7 ×1
django-forms ×1
django-views ×1
enzyme ×1
indexeddb ×1
jquery ×1
leaflet ×1
localforage ×1
mysql ×1
php ×1
tiptap ×1
vue.js ×1
vuejs3 ×1
yii ×1