Проверка другого поля одновременно с проверкой отношения «многие ко многим» - PullRequest
0 голосов
/ 13 октября 2010

У меня простой дизайн владения одной из моих моделей.Он может принадлежать нескольким людям, и нынешние владельцы могут добавлять других людей, но они должны подтвердить приглашение, прежде чем они будут считаться реальным владельцем.

class MyOwnedThing(models.Model):
    owners = models.ManyToManyField(User, through='Ownership', related_name='othings')

    def is_owner(self, user):
        return user in self.owners

class Ownership(models.Model):
    user = models.ForeignKey(User)
    myownedthing = models.ForeignKey(MyOwnedThing)

    confirmed = models.BooleanField(default=False)

Проблема в том, MyOwnedThing.is_owner необходимо проверить,владелец подтвердил свое приглашение.Есть ли простой способ сделать это, или я оставил делать отдельную попытку / кроме около Ownership.objects.filter(user=u, myownedthing=mot, confirmed=True)?

1 Ответ

0 голосов
/ 13 октября 2010

Я обычно использую таблицы ассоциаций для этого типа функциональности.Следующее не было проверено, но должно дать вам общее представление о том, что я имею в виду:

class Resource(models.Model):
    resource = models.TextField(max_length=255)

class ResourceUser(models.Model):
    owner = models.ForeignKey(User)
    resource = models.ForeignKey(Resource)

    def is_owner(self, user, res):
        return self.filter(self.owner=user).filter(self.resource=res)
...