使用Django中的ContentType过滤2个模型 [英] Filter 2 models with ContentType in Django

查看:135
本文介绍了使用Django中的ContentType过滤2个模型的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有2个配置文件模型。我正在创建一个参加者对象。如何在两个配置文件之间进行过滤?

  class Profile1(models.Model):
user = models。 ForeignKey(User,null = True,unique = True)

class Profile2(models.Model):
user = models.ForeignKey(User,null = True,unique = True)

class Attendee(models.Model):
event = models.ForeignKey(Event)
#这个过滤器通过一切...如何过滤掉只有2个配置文件对象?
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
profile = generic.GenericForeignKey('content_type','object_id')
解决方案

由于 ContentType模型有三个字段 app_label 模型名称。所以你可以轻松地过滤这些字段。

  attendees = Attendee.objects.filter(content_type__model ='Profile1')


I have 2 profile Models. And I am creating an "Attendee" object. How do I filter just between the 2 profiles?

class Profile1(models.Model):
    user = models.ForeignKey(User, null=True, unique=True)

class Profile2(models.Model):
    user = models.ForeignKey(User, null=True, unique=True)

class Attendee(models.Model):
    event = models.ForeignKey(Event)
    # This filters through everything... How do I filter down just to the 2 profile objects?
    content_type = models.ForeignKey(ContentType)
    object_id = models.PositiveIntegerField()
    profile = generic.GenericForeignKey('content_type', 'object_id')

Thanks for your help!

解决方案

As ContentType model has three fields app_label, model and name. So you can easily filter through these fields.

attendees = Attendee.objects.filter(content_type__model = 'Profile1')

这篇关于使用Django中的ContentType过滤2个模型的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆