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
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 –
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) –