【发布时间】:2016-11-22 09:45:14
【问题描述】:
我有一个模型来保存用户的反应,但我的反应类型很少 - 1、2、3、4。 用户可以对不同的值做出几次反应,我想将它们保存在数据库中。 这是我的模型(我使用的是通用外键,不确定是否重要)。
class Reaction(models.Model):
user = models.ForeignKey('auth.User', on_delete=models.SET_NULL, null=True)
date = models.DateTimeField("Reaction date", auto_now_add=True)
content_type = models.ForeignKey(ContentType, verbose_name=_('content type'),
related_name="content_type_for_%(class)s", on_delete=models.CASCADE)
object_pk = models.TextField(_('object ID'))
root_obj = GenericForeignKey(ct_field="content_type", fk_field="object_pk")
react = models.CharField('Reaction', max_length=10)
我想获取用户对特定反应(例如 2)做出反应的所有 root_obj(如果可能,则不同),而不是之后对 3,4 类型的反应做出反应。
有可能吗? 谢谢
R
【问题讨论】:
-
你的意思是像
Reaction.objects.filter(user=request.user, react='2').only('root_obj').distinct()这样的东西吗? -
我不这么认为。仅当之后没有对 react=3,4 的反应时,我才想获得 root_obj
-
所以,在伪代码中,如果反应 = 2 并且同一用户没有反应 = 3 和反应 = 4,那么给我 root_obj。否则什么都不返回?
-
几乎 - 如果反应 = 2 并且对于同一用户没有 later 反应 = 3 和反应 = 4,那么给我 root_obj。
标签: django django-models foreign-keys django-queryset