Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Django- Cách ánh xạ các tin nhắn được gửi giữa những người dùng

Vấn đề với tên liên quan là nó phải là một chuỗi, như sau:

sender_id = models.ForeignKey(User, related_name= 'invites_sent', on_delete = models.CASCADE )
recipient_id = models.ForeignKey(User, related_name= 'invites_received', on_delete = models.CASCADE)

điều này giải quyết vấn đề của bạn với việc nhận được lời mời của người dùng, vì đó là tên có liên quan. giả sử bạn có một người dùng được khởi tạo với tư cách là người dùng này, bạn có thể nhận được tất cả các lời mời mà anh ta đã gửi bằng cách thực hiện:

invites = thisuser.invites_sent.all()

hoặc những lời mời mà anh ấy nhận được bằng cách thực hiện:

invites = thisuser.invites_received.all()

Có thể có một mục đích nào đó mà tôi không biết, vì tôi còn khá mới đối với tất cả những điều này, nhưng tôi không thấy điểm mấu chốt trong concert_idartist_id , vì chúng đều là auto_field và sẽ luôn có cùng giá trị, giá trị này cũng sẽ là giá trị giống nhau của id trường mà như bạn đã chỉ ra, django tự động tạo (khi bạn không đặt trường khác làm khóa chính cho mô hình).

Những gì tôi muốn làm là sau đây. Xác định lời mời như sau:

class Invite(models.Model):
    sender = models.ForeignKey(User, related_name= 'invites_sent', on_delete = models.CASCADE )
    recipient = models.ForeignKey(User, related_name= 'invites_received', on_delete = models.CASCADE)
    message = models.CharField(max_length = 120, blank = True, null = True)
    date_sent = models.DateTimeField(auto_now_add = True, auto_now = False)

thì bạn có thể tạo các lời mời mới như sau:

from appname.models import User, Invite

inviter = User.objects.get(id=57) #enter whatever id is the inviter's id
invitee = User.objects.get(id=42) #enter id of person that is being invited
new_invite = Invite(sender=inviter, recipient=invitee, message='Hello, you are invited')
new_invite.save()

và nhận được những lời mời của người dùng như thế này:

from appname.models import User, Invite

thisuser = User.objects.get(id=42)
invites_sent_by_user = thisuser.invites_sent.all()
invites_received_by_user = thisuser.invites_received.all()
invites_received_after_march_seventh= thisuser.invites_received.filter(date_sent__gt='2015-03-07')

Vì bạn có thể truy cập các lời mời thông qua Related_name mà bạn đã chỉ định trong khai báo khóa ngoại nên nhiềutomanyfield trên mô hình người dùng không phục vụ mục đích nào.

Hy vọng tôi đã bao gồm hầu hết mọi thứ

(có thể có lỗi chính tả vì tôi đã nhập tất cả mã ở đây)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sử dụng utf8 hay không - Vấn đề mã hóa ký tự MySQL và PHP

  2. Truy vấn để lấy các Bản ghi thứ 2 và 3 từ một Bảng

  3. Làm cách nào để thêm mệnh đề where trong câu lệnh Chèn MySQL?

  4. Codeigniter Cart - lưu dữ liệu trong cơ sở dữ liệu - làm thế nào để tiếp cận?

  5. MYSQL QUERY thay thế giá trị NULL trong một hàng bằng các giá trị trung bình