0

私は自分のモデルの 1 つにシンプルな所有権設計をしています。複数のユーザーが所有することができ、現在の所有者は他のユーザーを追加できますが、実際の所有者として扱われる前に、招待を確認する必要があります。

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、所有者が招待を確認したことを確認する必要があることです。それを行う簡単な方法はありますか、それとも別の try/except を実行したままOwnership.objects.filter(user=u, myownedthing=mot, confirmed=True)ですか?

4

1 に答える 1

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)
于 2010-10-13T14:52:54.167 に答える