我在论坛上发现了类似的错误,但我没有看到代码中的任何错误,模型和视图实际上并不复杂。
class Word(models.Model):
word_text = models.CharField(max_length=50)
user_crea = models.CharField(max_length=20)
publ_date = models.DateTimeField(auto_now_add=True)
modi_date = models.DateTimeField(auto_now=True)
class Explanation(models.Model):
word_foid = models.ForeignKey(Word, on_delete=models.CASCADE)
expl_text = models.CharField(max_length=50)
user_crea = models.CharField(max_length=20)
publ_date = models.DateTimeField(auto_now_add=True)
modi_date = models.DateTimeField(auto_now=True)
所以在我看来,外交关系应该没问题。当我通过管理面板添加新数据时,我没有遇到任何问题。我在视图中使用它:
views.py :
def index(request):
if request.method == 'POST':
form = Search(request.POST)
if form.is_valid():
dane = form.cleaned_data
tlumaczenie=Explanation.objects.filter(Word__word_text=dane['Searched_word'])
print(tlumaczenie)
return render(request,'explanation.html', {'dane':dane})
但我仍然收到错误:
django.core.exceptions.FieldError:无法解析关键字' Word'进入田野。选项包括:expl_text,id,modi_date,publ_date,user_crea,word_foid,word_foid_id
我不明白为什么。它应该发送如下查询:
select e.* from word w join explanation e on w.word_id = e.word_foid where w.word_text = dane['Searched_word']
并检索数据。
为什么它无法正常工作?
答案 0 :(得分:2)
您的外键字段名为word_foid
,而不是Word
。查询应该像这样使用该名称
tlumaczenie = Explanation.objects.filter(word_foid__word_text=dane['Searched_word'])