首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Django错误中设置ForeignKey :不存在匹配查询

在Django错误中设置ForeignKey :不存在匹配查询
EN

Stack Overflow用户
提问于 2021-12-16 17:53:28
回答 1查看 188关注 0票数 0

我想将ForeignKeys设置为views.py中的表,但我得到了这个错误

不存在

单词匹配查询。

在这一行代码中:

代码语言:javascript
复制
  word_id = Words.objects.get(pk= wordID), 

我不知道出了什么问题,为什么我会犯这个错误?那我该怎么设置外键呢?

这是我的model.py代码

代码语言:javascript
复制
class Words(models.Model):
    word = models.CharField(max_length=50)
    phonetic= models.CharField(max_length=50)
    audio=  models.URLField(max_length = 200)

class Meanings(models.Model):
    word_id = models.ForeignKey(Words, on_delete=models.CASCADE)
    partOfSpeech = models.CharField(max_length=30)

class Definitions(models.Model):
    word_id = models.ForeignKey(Words, on_delete=models.CASCADE)
    Meaning_id = models.OneToOneField(Meanings, on_delete=models.CASCADE, primary_key=True)
    definition = models.TextField()

    def __str__(self):
        return self.definition

这是views.py:

代码语言:javascript
复制
def get_details(request):
    words = ['hello', 'table', 'windows']

    wordID = 0
    MeaningID = 0

    for word in words:
        wordID += 1
        print(word)
        url = 'https://api.dictionaryapi.dev/api/v2/entries/en/' + word
        response = requests.get(url)

        if type(response.json()) == list:
            response = response.json()[0]  # convert list to dictionary

        word = response.get('word', {})
        phonetics = response.get('phonetics', {})
        phonetic = phonetics[0]
        print(phonetic)

        word_data = Words(
            word=response.get('word', {}),
            phonetic=phonetic.get('text', {}),
            audio=phonetic.get('audio', {})
        )
        word_data.save()

        meanings = response.get('meanings', {})
        for i in range(len(meanings)):
            MeaningID += 1
            meaning_data = Meanings(
                word_id=Words.objects.get(pk=wordID),
                partOfSpeech=meanings[i].get('partOfSpeech', {})
            )
            meaning_data.save()

            definitions_data = Definitions(
                word_id=Words.objects.get(id=wordID),
                meaning_id=Meanings.objects.get(id=MeaningID),
                definition=meanings[i].get('definition', {})
            )
            definitions_data.save()
    return HttpResponse("data added")
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-16 21:56:25

在删除所有实例之后,Django模型实例主键不会重置为1,为了重置主键,我在DB上使用此查询

代码语言:javascript
复制
ALTER SEQUENCE al_words_id_seq RESTART WITH 1;

al_words_id_seq可以由yourapp_table_id_seq代替。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70383547

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档