在Django ORM中将标签分配给对象多对多关系

时间:2016-04-28 20:50:54

标签: python django orm foreign-keys

我有三张桌子。 TagQueryStringTagQueryStringQueryStringTag第三个表,用于连接TagQueryString,并允许一个Tag与多个QueryString相关联,反之亦然。它包含两个外键。一个指向Tag,一个指向QueryString

流程是这样的。创建QueryString对象并将其保存在数据库中。在此之后,创建了4 Tags。我想将这些拍摄与特定的QueryString对象相关联。

到目前为止,我在所有尝试中都失败了。文档没有提供太多帮助,我已经尝试了我能想到的一切。

以下是我的模特......

class QueryString(BaseObject): 

    server_id = models.IntegerField()
    schema = models.CharField(max_length=255, blank=True)
    query = models.CharField(max_length=60000) 
    variables = models.TextField(blank=True)
    created_by = models.ForeignKey(User, related_name='queries_created')
    updated_by = models.ForeignKey(User, related_name='queries_last_edited')
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField()
    touched_by = models.CharField(max_length=1000)
    config = models.TextField(blank=True)
    runs_started = models.IntegerField(default=0)
    runs_completed = models.IntegerField(default=0)
    runs_completed_duration = models.IntegerField(default=0) # total number of seconds spent running this query to completion
    formats = "pretty_html html json prettyjson csv excel tableau".split()

class Tag(models.Model):
    name = models.CharField(max_length=100)

class QueryStringTab(models.Model):
    tag = models.ForeignKey(Tag, related_name='querystringtag')
    querystring = models.ForeignKey(QueryString, related_name='querystringtag')

以下是我的观点...
(请注意,query是唯一的QueryString个对象我试图与下面的四个标签相关联)

tags = ['one', 'two', 'three', 'four']

for tag in tags:
    newtag = Tag(name=tag)
    newtag.save()
    query.querystringtab.tag(newtag.pk)

有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:1)

我建议在StackOverflow上搜索一下。我找到了两个可能相关的答案,搜索“python django很多很多”:

例如: Way to allow for duplicate many-to-many entries in Python/Django