gpt4 book ai didi

python - 使用ForeignKey关系将数据保存到Django中的模型中

转载 作者:行者123 更新时间:2023-12-01 07:06:16 27 4
gpt4 key购买 nike

当我解析页面时,我无法将类别和主题保存到 Django 中的数据库中。我该怎么办?

class Category(models.Model):
category = models.CharField(max_length=50)
slug = models.CharField(max_length=60, unique=True)

class Topic(models.Model):
topic = models.CharField(max_length=50)
slug = models.CharField(max_length=60, unique=True)
category = models.ForeignKey(Category, on_delete=models.CASCADE)

class Page(models.Model):
category = models.ForeignKey(Category, on_delete=models.CASCADE)
topic = models.ForeignKey(Topic, on_delete=models.CASCADE)
...

我写了,但是没用。 add() 很可能不能与 models.ForeignKey 一起使用,对吗?如果是的话怎么办?

from django.template.defaultfilters import slugify

...

page = {
'datetime': datetime,
'title':title,
'slug':slug,
'short_text':short_text,
'text':text,
'image':image_name,
'img_source':img_source,
'page_source':page_source,
}

try:
page = Page.objects.create(**page)
except Exception as e:
print(e, type(e))


category = {'category':category, 'slug':slugify(category)}
category, created = Topic.objects.get_or_create(**category)
page.category.add(category)

topic = {'topic':topic, 'slug':slugify(topic)}
topic, created = Topic.objects.get_or_create(**topic)
page.topic.add(topic)

最佳答案

由于它是一个(非空)ForeignKey,因此字段 topiccategory准确引用 一个 TopicCategory 对象。

因此,您应该首先构造CategoryTopic对象,然后创建一个使用这些的Page对象,例如:

<b>category</b>, created = Category.objects.get_or_create(
category=category_name,
slug=slugify(category_name)
)
<b>topic</b>, created =Topic.objects.get_or_create(
topic=topic_name,
slug=slugify(topic_name),
<b>category=category</b>
)
page = Page.objects.create(
datetime=datetime,
title=title,
slug=slug,
short_text=short_text,
text=text,
image=image_name,
img_source=img_source,
page_source=page_source,
<b>category=category,
topic=topic</b>
)

我还建议在构建 时使用 category_nametopic_name 而不是 categorytopic >CategoryTopic 对象,否则会造成困惑。

关于python - 使用ForeignKey关系将数据保存到Django中的模型中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58433850/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com