目前,我在Django中有三个模型可以创建循环引用:
AUser
可以存在于ALocation
中。
ALocation
必须是AProperty
的一部分。
AProperty
必须有一个所有者,即AUser
。
我希望每个User
指定一个位置的原因是为了住在公寓里的人。公寓租户会住在一个编号的房间,但房客不会。但请注意,该位置也可以只是一个财产(即房客居住的位置只是一个有地址的财产;该财产没有房间编号、楼层或建筑物)。
下面是(精简)代码:
class User( models.Model ) :
TYPE_CHOICES = (
( 't', 'tenant' ),
( 'o', 'property owner' ),
( 'v', 'vendor' ),
( 'm', 'property manager' ),
)
user_type = models.CharField( max_length = 1, choices = TYPE_CHOICES, default = 't' )
first_name = models.CharField( max_length = 135 )
last_name = models.CharField( max_length = 135 )
location = models.ForeignKey( Location, null = True, blank = True )
class Property( models.Model ) :
name = models.CharField( max_length = 135 )
owner = models.ForeignKey( User )
address_line_one = models.CharField( max_length = 135 )
address_line_two = models.CharField( max_length = 135, blank = True )
city = models.CharField( max_length = 135 )
state = models.CharField( max_length = 135 )
zip_code = models.CharField( max_length = 135 )
class Location( models.Model ) :
room = models.CharField( max_length = 135, blank = True )
floor = models.CharField( max_length = 135, blank = True )
building = models.CharField( max_length = 135, blank = True )
prop = models.ForeignKey( Property )
请让我知道,如果你们需要更多的澄清或代码。提前谢谢!
最佳答案
比如说,您可以使用字符串指定要在关系中使用的应用程序和模型。
如果需要在尚未定义的模型上创建关系,可以使用模型的名称,而不是模型对象本身