Я пытаюсь добавить функциональность обмена сообщениями на мой веб-сайт электронной коммерции, где покупатели могут сообщать продавцам, а продавцы могут сообщать покупателям, как только покупатель что-то купит у них (еще не написал код для этого, просто хочу базовый функциональность обмена сообщениями). Вот что я пробовал. Через сообщение о сообщении_SELLER я могу напрямую сообщать об этом конкретном продавке, он приведет меня к почтовому ящику этого продавца, а user_messages_view похоже на почтовый ящик сообщений этого пользователя, отправленного и полученного, и пользователь может Выберите сообщение, чтобы открыть разговор. Именно тогда, когда пользователь получает сообщение, инициированное другим пользователем, в почтовом ящике показано неверное самоотверждение, а не фактическое сообщение. Несмотря на то, что счетчик непрочитанных сообщений правильно показывает нечитанные сообщения для этого пользователя. < /P> Как я могу решить проблему? /p>
class Business(models.Model):
BUSINESS_TYPE_CHOICES = [
('product', 'Product Business'),
('service', 'Service Business'),
]
seller = models.OneToOneField(CustomUser, on_delete=models.CASCADE, related_name='business')
business_name = models.CharField(max_length=100)
description = models.TextField()
business_slug = models.SlugField(unique=True, blank=True)
business_type = models.CharField(max_length=20, choices=BUSINESS_TYPE_CHOICES)
countries = models.ManyToManyField(Country)
states = models.ManyToManyField(State)
address = models.CharField(max_length=200)
phone = models.CharField(max_length=20)
website = models.URLField(blank=True, null=True)
email = models.EmailField(blank=True, null=True)
profile_picture = models.ImageField(upload_to='business_profiles/', blank=True, null=True)
banner_image = models.ImageField(upload_to='business_banners/', blank=True, null=True)
is_featured = models.BooleanField(default=False)
def __str__(self):
return self.business_name
def save(self, *args, **kwargs):
if not self.business_slug:
self.business_slug = slugify(self.business_name)
super().save(*args, **kwargs)
@login_required
def user_messages_view(request, business_slug=None):
# Fetch all businesses the user has interacted with
businesses = Business.objects.filter(
Q(messages__sender=request.user) | Q(messages__recipient=request.user)
).distinct()
user_messages = []
unread_businesses = set()
for business in businesses:
last_message = Message.objects.filter(
Q(sender=request.user, recipient=business.seller) |
Q(sender=business.seller, recipient=request.user)
).filter(business=business).order_by('-timestamp').first()
unread_count = Message.objects.filter(recipient=request.user, business=business, is_read=False).count()
if unread_count > 0:
unread_businesses.add(business)
Я пытаюсь добавить функциональность обмена сообщениями на мой веб-сайт электронной коммерции, где покупатели могут сообщать продавцам, а продавцы могут сообщать покупателям, как только покупатель что-то купит у них (еще не написал код для этого, просто хочу базовый функциональность обмена сообщениями). Вот что я пробовал. Через сообщение о сообщении_SELLER я могу напрямую сообщать об этом конкретном продавке, он приведет меня к почтовому ящику этого продавца, а user_messages_view похоже на почтовый ящик сообщений этого пользователя, отправленного и полученного, и пользователь может Выберите сообщение, чтобы открыть разговор. Именно тогда, когда пользователь получает сообщение, инициированное другим пользователем, в почтовом ящике показано неверное самоотверждение, а не фактическое сообщение. Несмотря на то, что счетчик непрочитанных сообщений правильно показывает нечитанные сообщения для этого пользователя. < /P> [b] Как я могу решить проблему? /p> class Business(models.Model): BUSINESS_TYPE_CHOICES = [ ('product', 'Product Business'), ('service', 'Service Business'), ] seller = models.OneToOneField(CustomUser, on_delete=models.CASCADE, related_name='business') business_name = models.CharField(max_length=100) description = models.TextField() business_slug = models.SlugField(unique=True, blank=True) business_type = models.CharField(max_length=20, choices=BUSINESS_TYPE_CHOICES) countries = models.ManyToManyField(Country) states = models.ManyToManyField(State) address = models.CharField(max_length=200) phone = models.CharField(max_length=20) website = models.URLField(blank=True, null=True) email = models.EmailField(blank=True, null=True) profile_picture = models.ImageField(upload_to='business_profiles/', blank=True, null=True) banner_image = models.ImageField(upload_to='business_banners/', blank=True, null=True) is_featured = models.BooleanField(default=False)
def __str__(self): return self.business_name
def save(self, *args, **kwargs): if not self.business_slug: self.business_slug = slugify(self.business_name) super().save(*args, **kwargs)
@login_required def user_messages_view(request, business_slug=None): # Fetch all businesses the user has interacted with businesses = Business.objects.filter( Q(messages__sender=request.user) | Q(messages__recipient=request.user) ).distinct()
user_messages = [] unread_businesses = set()
for business in businesses: last_message = Message.objects.filter( Q(sender=request.user, recipient=business.seller) | Q(sender=business.seller, recipient=request.user) ).filter(business=business).order_by('-timestamp').first()
unread_count = Message.objects.filter(recipient=request.user, business=business, is_read=False).count() if unread_count > 0: unread_businesses.add(business)
Я использую приведенный ниже код в своем автоматическом процессе для перемещения сообщения из папки «Входящие» в другую папку. Но немногие электронные письма не перемещаются. Это занимает 1-2 часа, иногда больше дня-двух.
var requestBody = new...
Я пытаюсь сосредоточить текст, который находится в пограничных ящиках, которые я в конечном итоге поставлю за собой фоновое изображение, а также сосредоточиться на праве на веб -страницу сетки. Я попробовал отображение: Flex, Block и Inline Block,...
Я пытаюсь сосредоточить текст, который находится в пограничных ящиках, которые я в конечном итоге поставлю за собой фоновое изображение, а также сосредоточиться на праве на веб -страницу сетки. Я попробовал отображение: Flex, Block и Inline Block,...
Я пытаюсь сосредоточить текст, который находится в пограничных ящиках, которые я в конечном итоге поставлю за собой фоновое изображение, а также сосредоточиться на праве на веб -страницу сетки. Я попробовал отображение: Flex, Block и Inline Block,...