我正在尝试创建一个模型,其中一个字段应该是 Age 字段,但它不是一个简单的数字 ( IntegerField),而是需要是几个可用年龄范围的 Choice (5-8, 8-12, 12-18, 18-99, 5-99)。我正在查看 Choices 的文档,但我什至不确定我可以直接IntegerRangeField在其中使用 an ,所以我最终得到了这样的结果:
class Person(models.Model):
FIRST_RANGE = IntegerRangeField(blank=True, validators=[MinValueValidator(5), MaxValueValidator(8)])
SECOND_RANGE = IntegerRangeField(blank=True, validators=[MinValueValidator(8), MaxValueValidator(12)])
THIRD_RANGE = IntegerRangeField(blank=True, validators=[MinValueValidator(12), MaxValueValidator(18)])
FOURTH_RANGE = IntegerRangeField(blank=True, validators=[MinValueValidator(18), MaxValueValidator(99)])
FIFTH_RANGE = IntegerRangeField(blank=True, validators=[MinValueValidator(18), MaxValueValidator(99)])
AGE_CHOICES = (
(FIRST_RANGE, '5-8'),
(SECOND_RANGE, '8-12'),
(THIRD_RANGE, '12-18'),
(FOURTH_RANGE, '18-99'),
(FIFTH_RANGE, '5-99'),
)
age = models.IntegerRangeField(blank=True, choices=AGE_CHOICES)
Run Code Online (Sandbox Code Playgroud)
这是正确的方法吗?这对我来说看起来有点尴尬,我正在考虑只使用 Char 来代替,尽管我想坚持在最后在这个字段上有一个范围......
谢谢!
我遇到一个奇怪的问题,我的序列化器之一无法获取上下文,因此失败。
首先,在视图集上,我实现了一个列表方法,在该方法中,我根据一些依赖于模型中嵌套关系的条件来过滤订单。
class OrdersInAgendaViewSet(OrderMixin, viewsets.ReadOnlyModelViewSet):
queryset = Order.objects.all()
serializer_class = OrderInAgendaSerializer
permission_classes = (
CanManageOrder,
)
def list(self, request):
final_orders = set()
qs = super(OrdersInAgendaViewSet, self).get_queryset()
# Get only orders that have lines with products that have no rentals objects
for order in qs:
accommodations = False
lines = order.lines.all()
for line in lines:
if line.product.rental:
accommodations = True
break
if not accommodations:
final_orders.add(order.pk)
qs = qs.filter(pk__in=final_orders)
serializer = self.serializer_class(qs, many=True)
return Response(serializer.data)
Run Code Online (Sandbox Code Playgroud)
现在这个 ViewSet 的主要序列化器
class OrderInAgendaSerializer(serializers.ModelSerializer):
lines = …Run Code Online (Sandbox Code Playgroud) 我遇到了一个实现JPanel的类的麻烦,它似乎会杀死我的CPU,即使应用程序处于空闲状态且没有后台线程或类似的东西.
这个类看起来像这样:
public class GradientPanel extends JPanel {
/**
* Serial ID
*/
private static final long serialVersionUID = 1L;
/**
* Starting color for the gradient
*/
private Color startColor;
/**
* Ending color for the gradient
*/
private Color endColor;
/**
* Border Color
*/
private Color borderColor;
@Override
/**
* This is the method that actually paints the Panel
*
* @param g The graphics object used to do the rendering
*
*/
protected void paintComponent( Graphics …Run Code Online (Sandbox Code Playgroud) 我在这里遇到了一件奇怪的事情。我正在尝试在JTable单元内添加JLabel。标签图标可能会根据某些条件发生变化。我根据以下规范创建了一个虚拟项目:http : //javanepal.wordpress.com/2010/06/30/adding-jlabel-in-jtable/
而且效果很好。我将TableModel更改为从AbstractTableModel而不是DefaultTableModel扩展,现在添加一行时,如果检查Object [],则可以得到此信息:
[javax.swing.JLabel[,0,0,0x0,invalid,alignmentX=0.0,alignmentY=0.0,border=,
flags=8388608,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,
disabledIcon=,horizontalAlignment=LEADING,horizontalTextPosition=TRAILING,
iconTextGap=4,labelFor=,text=Row 1,Col1,verticalAlignment=CENTER,
verticalTextPosition=CENTER], whatever....]
Run Code Online (Sandbox Code Playgroud)
对于TableModel,代码是这样的:
public class MyModel extends javax.swing.table.AbstractTableModel {
Object[][] row = {{new JLabel("Row 1 Col 1"), "Row 1 Col 2", "Row 1 Col3"},
{new JLabel("Row 2 Col 1"), "Row 2 Col 2", "Row 2 Col3"},
{new JLabel("Row 3 Col 1"), "Row 3 Col 2", "Row 3 Col3"},
{new JLabel("Row 4 Col 1"), "Row 4 Col 2", "Row 4 Col3"}};
Object[] col = {"Column 1", "Column 2", "Column 3"}; …Run Code Online (Sandbox Code Playgroud) 在创建自定义Progress DialogFragment时,我有点困惑.一切正常,但由于我不希望用户"撤回"直到DialogFragment被解除,我正在尝试捕获KeyEvent并"禁用".
虽然这很好用:
@Override
public ProgressDialog onCreateDialog(Bundle savedInstanceState) {
final ProgressDialog dialog = new ProgressDialog(getActivity());
dialog.setMessage(getString(R.string.loading_text));
dialog.setIndeterminate(true);
dialog.setCancelable(false);
// Disable the back button
OnKeyListener keyListener = new OnKeyListener() {
@Override
public boolean onKey(DialogInterface dialog, int keyCode,
KeyEvent event) {
if( keyCode == KeyEvent.KEYCODE_BACK){
return true;
}
return false;
}
};
dialog.setOnKeyListener(keyListener);
return dialog;
}
Run Code Online (Sandbox Code Playgroud)
使用onCreateDialog不会让我正确地膨胀片段,因此,自定义我的片段的外观和感觉.另一方面,onCreateDialog完美地捕获了按键事件.切换到onCreateView时:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
//Inflate the XML view for the help dialog fragment
View view = inflater.inflate(R.layout.progress_dialog_fragment, container);
TextView …Run Code Online (Sandbox Code Playgroud) 我正在尝试在测试Flask应用程序中使用蓝图,但我遇到了一个奇怪的问题.这是我的代码的相关部分:
from functools import wraps
from flask import flash, redirect, render_template, \
request, session, url_for, Blueprint
from sqlalchemy.exc import IntegrityError
from datetime import datetime
from time import localtime, strftime
from .forms import AddAppointmentForm
from project import db
from project.models import Appointment
appointments_blueprint = Blueprint('appointments', __name__)
def login_required(test):
@wraps(test)
def wrap(*args, **kwargs):
if 'logged_in' in session:
return test(*args, **kwargs)
else:
flash('You need to login first.')
return redirect(url_for('users.login'))
return wrap
@appointments_blueprint.route('/appointments/')
@login_required
def appointments():
# Get current date
current_datetime = strftime("%Y-%m-%d %H:%M:%S", …Run Code Online (Sandbox Code Playgroud)