如何实现Django多选外键

tVo*_*oss 0 python database django model foreign-keys

这是场景.实际的对象名称被调整,但这是主意.假设我有一个颜色模型

class Color(models.Model):
    name = models.CharField(max_length=20)
Run Code Online (Sandbox Code Playgroud)

我也有一个用户模型

class User(models.Model):
Run Code Online (Sandbox Code Playgroud)

我想要做的是让用户选择多种颜色作为他们的最爱.有没有办法在单用户模型中正确存储多种颜色?

我有一个最好的想法是有一个看起来像这样的额外模型:

class UserMCColor(models.Model):
    user = models.ForeignKey('User')
    color = models.ForeignKey('color')
Run Code Online (Sandbox Code Playgroud)

并为所选择的每种喜欢的颜色添加该表的条目,然后只根据用户ID获取行.这是最好的方式吗?

mco*_*lin 5

你需要多对多的关系.用户可以拥有许多喜欢的颜色,颜色可以属于许多用户.

https://docs.djangoproject.com/en/1.4/topics/db/examples/many_to_many/

color = models.ManyToManyField(User)