当模型中的DateField到期时触发函数的最佳方法

时间:2016-06-13 16:58:00

标签: python django python-3.x

我有一个用户创建的“竞赛”模型,其中一个字段是

public class TournamentManager extends AppCompatActivity { Firebase ref; FloatingActionButton fab; EditText teamNumber; Button cancel; Button addTeam; public static List teams; ArrayAdapter <String> adapter; ListView list; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_tournament_manager); Toolbar b = (Toolbar) findViewById(R.id.toolbar); String extra = getIntent().getStringExtra("Tournament Name"); b.setTitle(extra); setSupportActionBar(b); int position = getIntent().getIntExtra("Position", 0); ref = AdminMain.ref.child("" + position).child("teams"); fab = (FloatingActionButton) findViewById(R.id.fab); fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { addTeamDialog(); if (teams == null){ //hi } } }); list = (ListView) findViewById(R.id.teamList); ref.addValueEventListener(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { teams = (ArrayList) dataSnapshot.getValue(); if (teams == null){ teams = new ArrayList(); } else { for (int i = 0; i < teams.size(); i++) { String temp = (String) (((HashMap) teams.get(i)).get("name")); teams.set(i, new Team(temp)); } } setAdapter(); } @Override public void onCancelled(FirebaseError firebaseError) { //do nothing } }); } public void setAdapter(){ adapter = new ArrayAdapter(TournamentManager.this, android.R.layout.simple_list_item_1, teams); list.setAdapter(adapter); list.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { teams = teams; } }); adapter.notifyDataSetChanged(); } public void addTeamDialog(){ LayoutInflater inflater = (LayoutInflater) getSystemService (Context.LAYOUT_INFLATER_SERVICE); View v = inflater.inflate(R.layout.activity_add_team, null); final AlertDialog diag = new AlertDialog.Builder(this) .setView(v) .create(); diag.show(); teamNumber = (EditText) diag.findViewById (R.id.editText); addTeam = (Button) diag.findViewById(R.id.addTeam); addTeam.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { addTeam(teamNumber.getText().toString()); diag.hide(); } }); cancel = (Button) diag.findViewById(R.id.cancel); cancel.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { diag.hide(); } }); } public void addTeam(String s){ teams.add(new Team(s)); ref.setValue(teams); if (teams.get(0) == null){ //hi } } }

我需要一种方法来在比赛结束时运行一个功能。该功能将通知用户,更新对象等。

实现这一目标的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

要安排任务,您可以查看here

至于这个问题,

  

识别日期时间字段已通过的程序

这样可行:

Contest.objects.filter(endTime__lte=timezone.now())

因此,您将有一个连续运行的任务,每隔 X 小时调用一次django命令,这将使用上述搜索来查找任何过期的竞赛。