【问题标题】:Django model: Get many fields from 2 tables on same foreign keyDjango模型:从同一个外键的2个表中获取许多字段
【发布时间】:2017-05-30 15:41:43
【问题描述】:

我在 Django 中有 2 个模型类:

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)

类通知存储有关用户活动的通知。字段“内容”如:“欢迎您成功注册商务课程”,或“5ASC 是您的优惠券代码”。字段类型存储对象的类型:课程、促销。

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)

在弹出的通知中,点击付费课程进入课程详情页面开始学习,点击未付费课程进入课程注册页面,点击促销代码进入促销代码页面

如何让 QuerySet 返回 Notification 和 PaymentTransaction 表的所有字段,条件是 Notification.receiver_id = PaymentTransaction.student_id 。 对于每个课程通知,我想获取课程付款状态。我做了:

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

但是没有用

【问题讨论】:

    标签: django-models django-queryset


    【解决方案1】:

    我不明白您为什么要这样创建模型,但是: 我认为应该是:

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

    而我是为了什么?只是显示列表? ~> 应该是用户页面中 Book_User 的列表 ~> 问题解决

    【讨论】:

    • 感谢您的回答,但我不想在我的数据库中添加更多表。我还更改了表格以更具体地解释我的问题
    • 在使用只有 1 个 FK 给用户的 Noti 时无法达到您的目的......它只是让您知道这个通知是为谁服务的。那么这个通知怎么链接到付款???它不能相互匹配。它只是让您知道哪个用户有此通知以及谁必须付款如果您想解决它:在课程页面中显示弹出窗口并设置操作:单击付款,取消付款,...您可以通过以下方式获取更多信息这个页面(当然是获取 id)
    猜你喜欢
    • 2015-03-28
    • 2016-03-13
    • 2016-02-05
    • 1970-01-01
    • 2010-10-09
    • 1970-01-01
    • 1970-01-01
    • 2019-02-22
    • 1970-01-01
    相关资源
    最近更新 更多