我想在一些模型中插入多对多关系,而不必完全重写模型。你知道吗
例如,考虑我安装的第三方模块中的djangoUser
模型和Foo
模型。你知道吗
如果我“拥有”Foo,我可以做:
class Foo(models.Model):
users = models.ManyToMany(User)
然后,如果我想将Foo
添加到用户,或者相反,我可以:
my_user.foo_set.add(my_foo)
my_foo.users.add(my_user)
但我不'自己'的代码,我想注入这种关系,所以我可以做上述。你知道吗
现在,如果我愿意,我甚至可以通过我制作的模型来建立一个完整的关系,然后把它放在两边,但这仍然需要改变模型。你知道吗
现在,在幕后,django多对多关系似乎是模型(它们肯定有表),有没有可能生成以下代码:
class FooUserRelationship(models.Model):
foo = ForeignKey(Foo)
user = ForeignKey(User)
表现得像多对多的关系?你知道吗
我能想到的最简洁的方法是提供一个中间类(或者可以提供几乎相同的查询的子类),一对一,然后多对多
现在我承认,这并不是最干净的方法,因为在检索结果时,它会涉及到进一步的SQL连接,但它确实保持了链接的灵活性,并提供了一种根据需要进行修改的方法。你知道吗
可以使用代理模型。这里person是第三方模型,Myperson是修改主模型的额外属性的模型。更多详情https://docs.djangoproject.com/en/1.9/topics/db/models/#proxy-models
相关问题 更多 >
编程相关推荐