2010-10-13 110 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)