5

我有 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)
    # 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')

谢谢你的帮助!

4

2 回答 2

9

由于ContentType 模型具有三个字段app_labelmodelname。因此,您可以轻松地过滤这些字段。

attendees = Attendee.objects.filter(content_type__model = 'Profile1')
于 2012-06-08T20:40:53.527 回答
4

我会去

from django.contrib.contenttypes.models import ContentType
...

Attendee.objects.filter(
   content_type=ContentType.objects.get_for_model(Profile1))

以避免在重构类名后比较字符串和错误。

于 2020-02-23T14:19:56.173 回答