【发布时间】:2020-05-06 15:38:50
【问题描述】:
我有以下型号:
class status(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
#data
class next(models.Model):
sender = models.ForeignKey(User, on_delete=models.CASCADE, related_name='sender')
target = models.ForeignKey(User, on_delete=models.CASCADE, related_name='target')
#data
class settings(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
#data
想要查询下一个和状态,输出如下:next,nextdata,status(target)
=> 将目标的状态附加到(下一个)查询集
这可以通过 Django Query 实现吗?或者我应该只写原始 SQL
#编辑: 此查询中的发件人始终是 current.user, 每个用户都有 1 个状态
#干杯, 凯斯洛尔
【问题讨论】:
-
问题是你建模它的方式,对于相同的
sender和相同的target,可以有多个nexts。所以接下来没有“一”,如果你愿意,可以有零个、一个或多个。通常情况下,最好对其建模。 -
对于每个用户,总是有 1 个状态,+ next=current.user 。所以我只需要排队状态(目标)
-
那么我认为在
status或User中创建一个ForeignKey来引用下一个更有意义,因为这种建模使得它不可能制作多个链接等。
标签: django django-models django-queryset django-orm