2010-10-13 53 views
0

我在我的一个模型上有一个简单的所有权设计。它可以由多个人拥有,当前所有者可以添加其他人,但他们必须确认邀请才能被视为真正的所有者。在检查多对多关系的同时检查另一个字段

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)

回答

0

我通常对这种类型的功能使用关联表。下面还没有经过测试,但应该给你一个我的意思的总体想法:

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)