Problemet med relateret_navn er, at det skal være en streng, som sådan:
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)
dette løser dit problem med at få brugernes invitationer, da det er hvad et relateret navn er til. forudsat at du har en bruger instantieret som denne bruger, kan du få alle de invitationer han sendte ved at gøre:
invites = thisuser.invites_sent.all()
eller alle de invitationer han modtog ved at gøre:
invites = thisuser.invites_received.all()
Måske er der et formål, som jeg ikke kender til, da jeg er ret ny i alt dette, men jeg kan ikke se meningen med concert_id
og artist_id
felt, da de begge er auto_field's og altid vil have den samme værdi, hvilket også vil være den samme værdi af id
felt, som, som du påpegede, django automatisk opretter (når du ikke har et andet felt indstillet som den primære nøgle for modellen).
Det jeg ville gøre er følgende. Definer invitation som sådan:
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)
så kan du oprette nye invitationer som denne:
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()
og få brugerinvitationer som denne:
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')
Da du er i stand til at få adgang til invitationerne gennem det relaterede_navn, du specificerede i den fremmede nøgleerklæring, at mangetomanyfield på brugermodellen ikke tjener noget formål.
Håber jeg dækkede det meste
(der kan være stavefejl, da jeg har indtastet al koden her)