我正在尝试在 Django 中构建一个包含公司和项目的应用程序的数据库。每个公司可以有多个项目,每个项目只能属于一个公司。
class Company(models.Model):
name = models.CharField(max_length=20)
class Project(models.Model):
company = models.ForeignKey(Company, on_delete=models.CASCADE)
project_id = models.PositiveIntegerField()
name = models.CharField(max_length=20)
Run Code Online (Sandbox Code Playgroud)
我希望模型项目中有一个字段或属性,其作用类似于公司内项目的自动增量整数。行为应该如下所示:
c1 = Company(name="C1")
c2 = Company(name="C2")
px = Project(company=c1, name="X")
py = Project(company=c2, name="Y")
pz = Project(company=c1, name="Z")
px.project_id
1
py.project_id
1
pz.project_id
2
Run Code Online (Sandbox Code Playgroud)
正确的做法是什么?
使用 JTabbedPane,我想捕捉新选项卡选择更改生效之前的瞬间并执行操作。它类似于摆动组件的焦点丢失事件。目的是在tab改变的时候将几个JTextField的文本保存到一个外部文件中,这样每次用户点击不同的tab时,当前tab的值都会写入到外部文件中。
我一直在使用 ChangeListener 来跟踪选项卡的更改,但还没有找到满足我需要的方法。在下一个简单示例中如何实现它的任何想法?
import java.awt.BorderLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTabbedPane;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
public class TabSample {
static void add(JTabbedPane tabbedPane, String label) {
JButton button = new JButton(label);
tabbedPane.addTab(label, button);
}
public static void main(String args[]) {
JFrame frame = new JFrame("TabSample");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JTabbedPane tabbedPane = new JTabbedPane();
String titles[] = { "Geometry", "Materials", "Analysis"};
for (int i = 0, n = titles.length; i < n; i++) {
add(tabbedPane, titles[i]);
}
ChangeListener changeListener = new …Run Code Online (Sandbox Code Playgroud)