• 1403/05/15

ارسال پیامک گروهی هنگام سیو مدل در ادمین :

سلام استاد وقتتون بخیر خوبید

یه مشکلی برام پیش اومده . من یک مدلی نوشتم که ادمین هر وقت اومد داخلش متن پیام رو نوشت و یوزر ها رو انتخاب کرد (رابطه many to many با یوزرم داره این مدل) و ذخیره رو زد ، بیاد اون متن برای تمامی کاربران سایت به صورت پیامک و ترجیحا ای سینک ارسال بشه  

راهی که به ذهنم رسید این بود که بیام متد save رو اور راید کنم و مایگریشن بزنم که به ارور ایمپورت ارور خوردم که واقعا بی دلیل بود : یه نگاهی به کدم بندازید بی زحمت :

class MessageGroupKavehNegar(models.Model):
    user = models.ManyToManyField(MyUser, verbose_name='کاربران')
    subject = models.CharField(max_length=200, verbose_name='عنوان پیام',
                               help_text='عنوان پیام صرفا برای نمایش مشخصه ای از پیام در لیست پیام های گروهی کاربرد دارد')
    text = models.TextField(verbose_name='متن پیام')

    def __str__(self):
        return self.subject

    class Meta:
        verbose_name = 'پیام'
        verbose_name_plural = 'لیست پیام های گروهی با پنل پیامکی'

    def save(self, *args, **kwargs):
        for user in self.user.all():
            send_group_message(user.username, self.text)
        super().save(*args, **kwargs)

این کد بالا دقیقا در فایل اکانت ماژول دات مدلز تعرف شده که مدل یوزرمم اونجاست و تابع sendgroupmessage از داخل فایل helper.py ایمپورت شده 

فایل helper.py:

def send_group_message(mobile, text):
    mobile = [mobile, ]
    text = [text, ]
    try:
        api = KavenegarAPI(Kavenegar_API)
        params = {
            'sender': '10008663',  # optional
            'receptor': mobile,  # multiple mobile number, split by comma
            'message': text,
        }
        response = api.sms_send(params)
        print(response)
    except APIException as e:
        print(e)
    except HTTPException as e:
        print(e)

و هنگام makemigrations این ارور رو میده :  

 

    app_config.import_models()
  File "O:\aria_complex_project\venv\lib\site-packages\django\apps\config.py", line 301, in import_models
    self.models_module = import_module(models_module_name)
  File "C:\Users\Mr.TerminaL\AppData\Local\Programs\Python\Python37\lib\importlib\__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
  File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 728, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "O:\aria_complex_project\account_module\models.py", line 3, in <module>
    from account_module.helper import send_group_message
  File "O:\aria_complex_project\account_module\helper.py", line 5, in <module>
    from account_module.models import MyUser
ImportError: cannot import name 'MyUser' from 'account_module.models' (O:\aria_complex_project\account_module\models.py)

و درصورتیکه مدل پیامک گروهیم در زیر مدل مای یوزرم تعریف شده 

 

و مشکل بعدیم اینه که ایا این روش باعث مسدود شدن یا بلوکه شدن ارسال درخواست ها نمیشه ؟ ایا واقعا پیامک برای تمامی کاربران با فرض بر حل شدن این مشکل بالا ارسال میشه ؟ اگر نیازی به سلری های جنگو وجود داره من این دوره رو هنوز نگذروندم امکانش هست راهنماییم کنید ؟ ممنون از توجهتون 

  • 1403/05/15
  • ساعت 08:56

سلام خدمت شما دوست عزیز

خطایی که دریافت کردین به import کلاسی اشاره میکنه که اسمش MyUser هستش

بررسی کنین جایی از پروژه از این نام استفاده کردین یا خیر

اگر استفاده کردین ، این نام اصلا وجود داره یا خیر


  • 1403/05/15
  • ساعت 16:31

خداروشکر مشکلم رفع شد  ممنونم 


  • 1403/05/16
  • ساعت 23:57

خواهش میکنم دوست من

موفق باشین :)


logo-samandehi