我想为文章添加标签,模型表的结构为:
class Tag(models.Model):
owner = models.ForeignKey(User,on_delete=models.CASCADE)
name = models.CharField(max_length=50, unique=Tre)
def __str__(self):
return self.name
class Meta:
ordering = ("id",)
class Article(models.Model):
tags = models.ManyToManyField(Tag, blank=True)
owner = models.ForeignKey(User, on_delete=models.CASCADE)
...
我检索最新的文章,然后使用正向查询创建标签记录并将其添加到文章中,
In [45]: a = Article.objects.all().last()
In [46]: a
Out[46]: <Article: learn django>
In [47]: a.tags.create(name="django")
它抛出异常:
IntegrityError: (1048, "Column 'owner_id' cannot be null")
所以,我必须在文章管理器中重复该文章
In [48]: a.tags.create(name="djang", owner=a.owner)
Out[48]: <Tag: django>
我想这是一项重复的工作,因为我正好在特定文章中进行工作,但是必须声明要创建标签的工作所在。
如何按照DRI原理进行操作?