• 1401/07/14

مشکل QuerySet  :

سلام استاد ممنونم از کمک و دوره بسیار عالی شما 
استاد در کویری ست زیر 
userpossibilitiroom  : <QuerySet [<ConnectorRoomPossibilities: room1-adminseen-local_Admin>, <ConnectorRoomPossibilities: room2-adminseen-local_Admin>,<ConnectorRoomPossibilities: room2-user3-local_member>, <ConnectorRoomPossibilities: room3-user2-local_member>]>

چطور میتوانم مشکل QuerySet بالا را حل کنم میخواهم و بجای ConnectorRoomPossibilities از 
roomname و  username  و  Possibilities استفاده کنم 

در مدلی که نوشتم 
def __str__(self):
    return f'{self.Room.name}-{self.user}-{self.Possibilities}'


هست ایا مشکل از کد بالاست ؟؟
باید چطور بنویسم که مشکل بعدا بتوانم در مورد موارد roomname و  username  و  Possibilities بتوانم فیلتر بنویسم 

  • 1401/07/16
  • ساعت 08:32

سلام دوست من

خوشحالم دوره براتون مفید بوده

متاسفانه من چیزی از ساختار مدل های شما متوجه نمیشم با این مورد

لطفا مدل های خودتون رو ارسال کنین و یک توضیح مختصر در مورد روش کارشون بدین تا بتونم راهنماییتون کنم :)


  • 1401/07/17
  • ساعت 21:17

from django.contrib.auth.models import User
# from account.models import User
from django.db import models


class Room(models.Model):
    name = models.CharField(max_length=128)
    online = models.ManyToManyField(to=User, blank=True)

    def get_online_count(self):
        return self.online.count()

    def join(self, user):
        self.online.add(user)
        self.save()

    def leave(self, user):
        self.online.remove(user)
        self.save()

    def __str__(self):
        return f'{self.name} ({self.get_online_count()})'


class Message(models.Model):
    user = models.ForeignKey(to=User, on_delete=models.CASCADE)
    room = models.ForeignKey(to=Room, on_delete=models.CASCADE)
    content = models.CharField(max_length=512)
    timestamp = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return f'{self.user.username}: {self.content} [{self.timestamp}]'


class Possibilities(models.Model):
    is_local_admin = models.BooleanField(default=False)
    is_local_member = models.BooleanField(default=False)
    is_local_supper_member = models.BooleanField(default=False)

    def __str__(self):
        if self.is_local_admin == False and self.is_local_supper_member == False and self.is_local_member == False:
            return f'user'
        if self.is_local_admin:
            return f'local_Admin'
        if self.is_local_supper_member:
            return f'local_supper_member'
        if self.is_local_member:
            return f'local_member'


class ConnectorRoomPossibilities(models.Model):
    Room = models.ForeignKey(to=Room, on_delete=models.PROTECT, null=True, blank=True)
    Possibilities = models.ForeignKey(to=Possibilities, on_delete=models.CASCADE, null=True, blank=True)
    User = models.ForeignKey(to=User, on_delete=models.PROTECT, null=True, blank=True)

    # def __str__(self):
        # return f"{self.User.username}-{self.Possibilities}-{self.Room}"
        # return str(list(ConnectorRoomPossibilities.objects.values('User', 'Possibilities', 'Room')))

    class Meta:
        ordering = ['User']


class ConnectorUserPossibilities(models.Model):
    User = models.ForeignKey(to=User, on_delete=models.PROTECT, null=True, blank=True)
    Possibilities = models.ForeignKey(to=Possibilities, on_delete=models.CASCADE, null=True, blank=True)

    def __str__(self):
        return f'{self.User.username}-{self.Possibilities}'

    class Meta:
        ordering = ['User']


  • 1401/07/17
  • ساعت 21:23

من از این کد دارم استفاده میکنم و میخواهم قاابلیت هایی را به آن اضافه کنم
کاربران 3 توع Possibilities داشته باشند 

    is_local_admin 
   is_local_member
    is_local_supper_member 

 

و در قسمت Consumers.py   یتوانم تشخیص بدهم که کاربر ایا موارد بالا را دارا هست یا خیر

استاد اردوخانی یک ایمیل خدمتتان ارسال کردم برای توضیحات بیشتر لطف میکنید ملاحظه بفرمایید 
 


  • 1401/07/17
  • ساعت 21:26

ایده اصلی و پایه و اساس کارم را دارم بر اساس این کد اموزشی که فایل github  هم دارد میسازم 

در فایل ورد ارسالی به ایمیل شما جزئیات را هم خدمتتان توضیح دادم ام 

https://testdriven.io/blog/django-channels/

 

https://github.com/testdrivenio/django-channels-example


  • 1401/07/18
  • ساعت 15:16

عذرخواهی میکنم ازتون دوست من

من باز هم متوجه نشدم که قصد انجام چه کاری رو دارین

فکر میکنم در مشاوره تلفنی در این مورد صحبت شد که طراحی جداولتون به چه صورتی باشه که بتونین از این ساختار استفاده کنین

یک جدول در نظر بگیرین برای نقش هایی که در نظر دارین

یک جدول به عنوان دسترسی ها در نظر بگیرین

یک جدول به عنوان واسط بین دسترسی ها و نقش ها در نظر بگیرین

یک جدول بین کاربر و نقش ها و همینطور گروه مورد نظر باید در نظر بگیرین

زمانی که کاربر درخواست خودش رو به سایت ارسال میکنه شما به کلید گروه دسترسی دارین ، کاربر جاری هم که در دسترس هستش و صرفا باید یک query به سمت دیتابیس زده بشه که این کاربر نقش مورد نظر در گروه مربوطه رو داره یا خیر


  • 1401/07/19
  • ساعت 19:19

ممنون استاد تشکر 
بسیار سپاس گزارم


  • 1401/07/21
  • ساعت 09:47

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

موفق باشین :)


logo-enamadlogo-samandehi