For example, a
class UserInfo(models.Model): nickname = models.CharField(max_length=32) username = models.CharField(max_length=32) password = models.CharField(max_length=64) gender_choices = ( (1,'male'), (2,'female'), ) gender = models.IntegerField(choices=gender_choices)
ralated_query_name
class U2U(models.Model): g = models.ForeignKey('UserInfo',ralated_query_name='a') b = models.ForeignKey('UserInfo',ralated_query_name='b') # ralated_query_name # obj.object male.b_set.all() # obj.object female.a_set.all()
ralated_name
class U2U(models.Model): g = models.ForeignKey('UserInfo',ralated_name='a') b = models.ForeignKey('UserInfo',ralated_name='b') # ralated_name # obj.object male.b.all() # obj.object female.a.all()
Revisiting past examples: reverse lookup alias substitution
class UserType(models.Model): title = models.CharField(max_length=32) class User(models.Model): username = models.CharField(max_length=32) ut = models.ForeignKey('UserType',related_name='xxx') ## related_name='xxx':
Reverse: lowercase table name user_set ===>xxx
## related_query_name = 'xxx'
反向:user_set==>xxx_set
Recommended use:
ut = models.ForeignKey('UserType',related_name='users')
obj.users
---End of recovery content---