Dựa trên tài liệu của Django mà tôi đã đọc, có vẻ như signals.py
trong thư mục ứng dụng là một nơi tốt để bắt đầu, nhưng vấn đề tôi đang gặp phải là khi tôi tạo tín hiệu pre_save
và tôi cố gắng nhập lớp từ mô hình, nó xung đột với import
trong mô hình của tôi.
# models.py
from django.contrib.auth.models import User
from django.db import models
from django.utils.translation import gettext as _
from signals import *
class Comm_Queue(CommunicatorAbstract):
queue_statuses = (
('P', _('Pending')),
('S', _('Sent')),
('E', _('Error')),
('R', _('Rejected')),
)
status = models.CharField(max_length=10, db_index=True, default='P')
is_html = models.BooleanField(default=False)
language = models.CharField(max_length=6, choices=settings.LANGUAGES)
sender_email = models.EmailField()
recipient_email = models.EmailField()
subject = models.CharField(max_length=100)
content = models.TextField()
# signals.py
from django.conf import settings
from django.db.models.signals import pre_save
from django.dispatch import receiver
from models import Comm_Queue
@receiver(pre_save, sender=Comm_Queue)
def get_sender_email_from_settings(sender, **kwargs):
obj=kwargs['instance']
if not obj.sender_email:
obj.sender_email='%s' % settings.ADMINS[0][1]
Mã này sẽ không chạy vì tôi nhập Comm_Queue
bên trong signals.py
và tôi cũng nhập các tín hiệu bên trong models.py
.
Bất cứ ai có thể cho lời khuyên về cách tôi có thể vượt qua vấn đề này?
Trân trọng