2017-05-30 3 views
0

Ich habe 2 Modellklassen in Django:Django Modell: Erhalten Sie viele Felder aus zwei Tabellen auf der gleichen Fremdschlüssel

class Notification(models.Model): 
receiver = models.ForeignKey(User, null=True, blank=True) 
content = models.CharField(max_length=500) 
object_id = models.IntegerField(blank=True, null=True) 
type = models.TextField(max_length=200, blank=True, null=True) 

Klasse Mitteilung speichert Benachrichtigung über Benutzer-Aktivität. Feld "Inhalt" ist wie: "Willkommen Sie registrierten Business-Kurs erfolgreich", oder "5ASC ist Ihr Gutschein-Code". Feldtyp speichert Objekttypen: Kurs, Werbung.

class PaymentTransaction(models.Model): 
course = models.ForeignKey(Course) 
student = models.ForeignKey(User) 
PAYMENT_STATUS = (SUCCESS, FAILURE, PROCESSING) 
payment_status = models.CharField(max_length=50, choices=PAYMENT_STATUS, default=PROCESSING) 

In Benachrichtigung Pop-up, wenn er auf einem bezahlten Kurs klickt dann auf Kurs Detailseite gehen und anfangen zu lernen, wenn er unbezahlten Kurs klickt dann auf Course Registern Seite gehen, wenn er auf dem Aktionscode klickt dann gehen Sie zu Codepage

Wie ein QuerySet alle Felder der Notification- und PaymentTransaction-Tabellen zurückgibt, und Bedingung ist Notification.receiver_id = PaymentTransaction.student_id. für jeden Kurs Benachrichtigung, ich möchte Course Zahlung status.I bekommen hat:

user = request.user p_list = PaymentTransaction.objects.filter(student=user) n_list = Notification.objects.filter(receiver=user).intersection(p_list)

Aber es did't arbeiten

Antwort

0

kann ich nicht verstehen, warum Sie die Models wie folgt erstellen, aber: ich denke, es sein sollte:

class Book: 
     title = models.CharField(max_length=500) 
     price = models.FloatField() 
class User: 
     name= models.CharField(max_length=500) 
     something = models.CharField() 
class Book_User: 
     user = models.ForeignKey(User) 
     book = models.ForeignKey(User) 
     detail = models.CharField() 

Und ich, was für Just Noti ist die Liste auftauchen? ~> es sollte die Liste von Book_User in Seite des Benutzers sein ~> Problem lösen

+0

Vielen Dank für Ihre Antwort, aber ich möchte nicht mehr Tabellen zu meiner Datenbank hinzufügen. Ich ändere auch meine Tabellen, um meine Frage genauer zu erklären –

+0

Kann Ihren Zweck nicht bekommen, wenn Sie Noti mit nur 1 FK zum Benutzer ... verwenden Es gerade Sie kennen dieses noti für wen. Also, wie zum Teufel diese noti Verbindung zu Zahlung ??? Es kann nicht miteinander übereinstimmen. Es nur so Sie, welche Benutzer diese noti haben und wer bezahlen müssen Wenn Sie es auflösen möchten: Pop-up in Course'page zeigen und die Aktion einstellen: Klicken Sie auf Pay, Unpay, ... und Sie können MEHR INFO über diese Seite (natürlich die ID) –

Verwandte Themen