我有包含到期日期的模型。領域看起來像這樣:在django應用程序中創建警報
passport_date_of_expiry = TodayOrLaterDateField(「到期日期」,)
此字段示於在管理列表顯示。我想要完成的是當到期日期到期日期爲6個月或更短時間時,該項目在管理員的列表顯示中用紅線突出顯示。要麼。當這種情況發生時,讓系統發送電子郵件作爲警報。我如何能夠輕鬆實現這一點。數據庫中已經有大量的數據,這是我想添加到這個系統中的一個功能。
我有包含到期日期的模型。領域看起來像這樣:在django應用程序中創建警報
passport_date_of_expiry = TodayOrLaterDateField(「到期日期」,)
此字段示於在管理列表顯示。我想要完成的是當到期日期到期日期爲6個月或更短時間時,該項目在管理員的列表顯示中用紅線突出顯示。要麼。當這種情況發生時,讓系統發送電子郵件作爲警報。我如何能夠輕鬆實現這一點。數據庫中已經有大量的數據,這是我想添加到這個系統中的一個功能。
要突出管理,你可以使用類似以下(得到這個來自https://docs.djangoproject.com/en/1.2/ref/contrib/admin/):
class Person(models.Model):
first_name = models.CharField(max_length=50)
last_name = models.CharField(max_length=50)
expiry_date = models.DateTimeField()
def colored_name(self):
if datetime.datetime.now() >= self.expiry_date:
return '<span style="color: red;">%s %s</span>' % (self.first_name, self.last_name)
colored_name.allow_tags = True
class PersonAdmin(admin.ModelAdmin):
list_display = ('colored_name', 'first_name', 'last_name')
這將突出onlye在管理界面中一個collumn但可以注意到。
爲了提醒您應該創建管理命令並從cron運行它。
項目/應用程序/管理/命令/ check_expired.py:
# -*- coding: utf-8 -*-
from django.core import management
from django.core.mail import mail_admins
class Command(BaseCommand):
def inner_run(self, *args, **options):
expired_items = Model.objects.filter(expiry_date__lte=datetime.datetime.now())
message = some_message_formatter(expired_items)
mail_admins(subject='Alerts on my Project!', message=message)
的cron:
8 3 */15 * * cd /path/to/project && echo 'Activate virtual env if needed' && PYTHONPATH='Additional_python_path' DJANGO_SETTINGS_MODULE=your_project.settings django-admin.py check_expired
這正是我所需要的。輝煌。 – roykasa 2013-02-18 09:54:50
如果您想要在admin的列表顯示中突出顯示該項目的路線,則需要覆蓋admin/change_list_results.html模板。從該文件中的代碼片段看起來是這樣的:
{% for result in results %}
{% if result.form.non_field_errors %}
<tr><td colspan="{{ result|length }}">{{ result.form.non_field_errors }}</td></tr>
{% endif %}
<tr class="{% cycle 'row1' 'row2' %}">
{% for item in result %}{{ item }}{% endfor %}
</tr>
{% endfor %}
你可以嘗試添加代碼來檢查,如果結果項目有你要找的屬性和使用不同的類比ROW1或2行。只要記住這是一個用於管理員中所有對象的文件。
要發送電子郵件,您可以編寫一個獨立的腳本,由cron調用。確保將virtualenv的路徑添加到sys.path中,並將os.environ [「DJANGO_SETTINGS_MODULE」]設置爲您的項目設置。之後,它應該是一個簡單的查詢來查找過期的對象和使用django.core.mail.MailMessage發送郵件。 https://docs.djangoproject.com/en/1.4/topics/email/
謝謝瑞安。我會努力的。謝謝您的幫助。 – roykasa 2013-02-16 13:22:43
這不是一個編程的問題一樣多的要求。 – millimoose 2013-02-16 13:11:15
你可以在你的看法條件:如果護照到期,然後發送通知 – catherine 2013-02-16 13:13:43