Django ForeignKey 的问题求教

2018-09-21 16:14:40 +08:00
 faker1

如下 model

class Region(models.Model):
    """ 区域 """
    name = models.CharField(max_length=30)
    created_at = models.DateTimeField(auto_now=True)
 
 class UserProfile(models.Model):
    """
    用户信息
    """
    user = models.OneToOneField(
   
    region = models.ForeignKey(Region, on_delete=models.CASCADE, null=True, blank=True)
    

我想为 UserProfile 关联多个 region,这个怎么写啊,有点懵逼

1778 次点击
所在节点    Python
9 条回复
hiths
2018-09-21 16:17:43 +08:00
manytomany 应该可以的
hiths
2018-09-21 16:18:28 +08:00
@hiths 哦不对看错了。尴尬
hiths
2018-09-21 16:22:31 +08:00
@hiths 好像没错哈哈哈就用 manytomany...
wuyifar
2018-09-21 16:28:05 +08:00
为 UserProfile 关联多个 region 的意思是, 一条用户信息可以包含多个用户信息吗, 如果是的话,直接将外键设置在 Region 下 userprofile= models.ForeignKey(UserProfile, on_delete=models.CASCADE, null=True, blank=True) 这样就是一个一对多的关系了。
faker1
2018-09-21 16:54:28 +08:00
@wuyifar , 但是暂时不能动结构,有办法可以实现我的目的吗?谢谢了
welkinzh
2018-09-21 16:59:18 +08:00
四楼的方法不能用吗。。。那你可以在 UserProfile 下添加 region1, region2, region3... 不
uhayate
2018-09-21 17:06:26 +08:00
JSONField 了解一下,爱有几个 region 有几个。
SmartKeyerror
2018-09-22 00:19:26 +08:00
一句话: 一对多的关联关系,关系保存在"多"的那张表中。ForeignKey 其实在数据库中为一个 id,如果是 user 有多个 region,那么 region 就是"多"关系。数据库的结构就是这样的:
user:
id username ...
1 张三

region:
id name ... user_id
1 中国 1
2 广东 1
这样一来张三就有多个区域了。
wuyifar
2018-09-23 16:57:47 +08:00
@faker1 不能改结构的话,可以加个表吗,可以的话就加个表,手动去关联

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/491585

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX