从get_or_create创建一行

时间:2019-05-06 00:23:59

标签: django django-models

我有2个模型。 TopicTopicPost模型。如果用户正在创建帖子,则他们将输入代表其帖子的标签。这就是TopicPost。它显示了与帖子相关的所有主题。我们首先检查标记是否在Topic模型中,否则,我们创建一个新主题。然后,我们获取刚刚创建的主题的ID,并将其用于TopicPost。这是我的模型的样子:

class Topic(models.Model):
    name = models.CharField(max_length=25)

class TopicPost(models.Model):
    topic = models.ForeignKey(Topic, on_delete=models.CASCADE)
    post = models.ForeignKey(Post, on_delete=models.CASCADE)

我知道我可以创建一个Topic

obj = Topic.objects.get_or_create(name=tag)

但是有没有办法将其结合起来并使用刚创建或检索到的主题的帖子ID和主题ID创建TopicPost?像子查询之类的东西?

1 个答案:

答案 0 :(得分:0)

对两个模型都应用 get_or_create() 逻辑,

topic, created = Topic.objects.get_or_create(name="some_name")
topic_post, _createdTopicPost.objects.get_or_create(topic=topic, post=post)