سلام استاد ممنونم از کمک و دوره بسیار عالی شما
استاد در کویری ست زیر
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 بتوانم فیلتر بنویسم
سلام دوست من
خوشحالم دوره براتون مفید بوده
متاسفانه من چیزی از ساختار مدل های شما متوجه نمیشم با این مورد
لطفا مدل های خودتون رو ارسال کنین و یک توضیح مختصر در مورد روش کارشون بدین تا بتونم راهنماییتون کنم :)
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']
من از این کد دارم استفاده میکنم و میخواهم قاابلیت هایی را به آن اضافه کنم
کاربران 3 توع Possibilities داشته باشند
is_local_admin
is_local_member
is_local_supper_member
و در قسمت Consumers.py یتوانم تشخیص بدهم که کاربر ایا موارد بالا را دارا هست یا خیر
استاد اردوخانی یک ایمیل خدمتتان ارسال کردم برای توضیحات بیشتر لطف میکنید ملاحظه بفرمایید
ایده اصلی و پایه و اساس کارم را دارم بر اساس این کد اموزشی که فایل github هم دارد میسازم
در فایل ورد ارسالی به ایمیل شما جزئیات را هم خدمتتان توضیح دادم ام
https://testdriven.io/blog/django-channels/
عذرخواهی میکنم ازتون دوست من
من باز هم متوجه نشدم که قصد انجام چه کاری رو دارین
فکر میکنم در مشاوره تلفنی در این مورد صحبت شد که طراحی جداولتون به چه صورتی باشه که بتونین از این ساختار استفاده کنین
یک جدول در نظر بگیرین برای نقش هایی که در نظر دارین
یک جدول به عنوان دسترسی ها در نظر بگیرین
یک جدول به عنوان واسط بین دسترسی ها و نقش ها در نظر بگیرین
یک جدول بین کاربر و نقش ها و همینطور گروه مورد نظر باید در نظر بگیرین
زمانی که کاربر درخواست خودش رو به سایت ارسال میکنه شما به کلید گروه دسترسی دارین ، کاربر جاری هم که در دسترس هستش و صرفا باید یک query به سمت دیتابیس زده بشه که این کاربر نقش مورد نظر در گروه مربوطه رو داره یا خیر
ممنون استاد تشکر
بسیار سپاس گزارم
خواهش میکنم دوست من
موفق باشین :)