def test_meta_rel_for_model():
class User(Model):
pass
class Category(Model):
parent = ForeignKeyField('self')
class Tweet(Model):
user = ForeignKeyField(User)
class Relationship(Model):
from_user = ForeignKeyField(User, related_name='r1')
to_user = ForeignKeyField(User, related_name='r2')
UM = User._meta
CM = Category._meta
TM = Tweet._meta
RM = Relationship._meta
# Simple refs work.
assert UM.rel_for_model(Tweet) is None
assert UM.rel_for_model(Tweet, multi=True) == []
assert UM.reverse_rel_for_model(Tweet) == Tweet.user
assert UM.reverse_rel_for_model(Tweet, multi=True) == [Tweet.user]
# Multi fks.
assert RM.rel_for_model(User) == Relationship.from_user
assert RM.rel_for_model(User, multi=True) == [Relationship.from_user,
Relationship.to_user]
assert UM.reverse_rel_for_model(Relationship) == Relationship.from_user
exp = [Relationship.from_user, Relationship.to_user]
assert UM.reverse_rel_for_model(Relationship, multi=True) == exp
# Self-refs work.
assert CM.rel_for_model(Category) == Category.parent
assert CM.reverse_rel_for_model(Category) == Category.parent
# Field aliases work.
UA = User.alias()
assert TM.rel_for_model(UA) == Tweet.user
评论列表
文章目录