Skip to main content
 首页 » 编程设计

python之将标签分配给Django ORM多对多关系中的对象

2025年04月02日29think

我有三个表。 标记、QueryStringTag 和QueryString。 QueryStringTag 创建的第三个表,用于连接 Tag 和 QueryString 并允许一个 Tag 与多个 相关联code>QueryString 的,反之亦然。它包含两个外键。一个指向 Tag,一个指向 QueryString。

流程是这样的。 QueryString 对象被创建并保存在数据库中。在此之后,将创建 4 个 标签。我想将这些拍摄与特定的 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) 

谁能指出我正确的方向?

请您参考如下方法:

我建议在 StackOverflow 上搜索此处。我在搜索“python django many to many”时找到了两个可能相关的答案:

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