Django报错:无法将'display_data'解析为字段,寻求解决方案
Django查询错误:Cannot resolve keyword 'display_data' into field 解决方案
问题描述
我开发了一个Django项目,用于嵌入展示YouTube视频,并让用户对视频进行成功、失败等5类评价(对应数值1-5),同时统计各类评价的数量。但运行时出现错误:
Cannot resolve keyword 'display_data' into field. Choices are: choosenum, displays, id, puplish_date, users。
现有代码
models.py
class Display(models.Model) : url=models.URLField(unique=True) text = models.CharField(max_length=150) class Display_Data(models.Model) : displays = models.ManyToManyField(Display,related_name='display_data') users= models.ManyToManyField(User) choosenum=models.IntegerField() puplish_date =models.DateTimeField(default=datetime.now)
views.py
check_url_exists(url_to_check): try: countArray= [] # محاولة استرداد سجل بناءً على الرابط المعطى display_obj = Display.objects.get(url=url_to_check) for i in range(1, 6): # حساب عدد السجلات where choosenum = i count = Display_Data.objects.filter(display_data__url=url_to_check, choosenum=i).count() print(count)# إضافة عدد السجلات إلى القائمة countArray.append(count) return countArray # الرابط موجود في قاعدة البيانات except Display.DoesNotExist: countArray= [0,0,0,0,0] return countArray def display_video(request, url): # تشكيل الـ URL الكامل لإطار الفيديو على YouTube embed_url = f"https://www.youtube.com/embed/{url}" full_url = f"https://www.youtube.com/watch?v={url}" soup = BeautifulSoup(requests.get(full_url).content, "html.parser") title = soup.title.text # استخدم نموذج "display_data" countArry=check_url_exists(embed_url) # استخدم "Count" لحساب عدد السجلات # طباعة النتيجة
模板代码
<div class="container mt-5"> <div class="d-flex justify-content-start">> <!-- زر "نجحت" --> <button type="submit" name="CHOOSE" value="1" class="btn btn-success mr-2">{{carry_0}} نجحت</button> <!-- زر "فشلت" --> <button type="submit" name="CHOOSE" value="2" btn btn-danger mr-2">{{carray_1}}فشلت</button> <!-- زر "تحتاج إلى مال" --> <button type="submit" name="CHOOSE" value="3" class="btn btn-warning mr-2">تحتاج إلى مال{{carray_2}}</button> <!-- زر "تحتاج إلى أدوات" --> <button type="submit" name="CHOOSE" value="4" btn btn-info mr-2">{{carray_3}}تحتاج إلى أدوات</button> <!-- زر "مؤجل" --> <button type="submit" name="CHOOSE" value="5" class="btn btn-secondary">{{carray_4}}مؤجل</button> <!-- زر "اخر نجاح" --> <button type="button" class="btn btn-success mr-2">اخر نجاح</button> <!-- زر "اخر فشل" --> <button type="button" class="btn btn-danger mr-2">اخر فشل</button> </div>
错误原因与修复方案
核心错误修复
错误出在views.py的查询语句中:display_data__url是Display模型的反向关联名称(通过related_name定义),并非Display_Data模型的字段。Display_Data中关联Display的字段是displays,因此查询时要改用displays__url。
同时补上check_url_exists函数缺失的def关键字,修正后的函数代码:
def check_url_exists(url_to_check): try: countArray = [] display_obj = Display.objects.get(url=url_to_check) for i in range(1, 6): # 替换display_data__url为displays__url count = Display_Data.objects.filter(displays__url=url_to_check, choosenum=i).count() print(count) countArray.append(count) return countArray except Display.DoesNotExist: return [0,0,0,0,0]
模板代码小问题修复
模板中部分按钮缺失class="属性,导致样式失效,修正后的模板片段:
<div class="container mt-5"> <div class="d-flex justify-content-start"> <!-- زر "نجحت" --> <button type="submit" name="CHOOSE" value="1" class="btn btn-success mr-2">{{carry_0}} نجحت</button> <!-- زر "فشلت" --> <button type="submit" name="CHOOSE" value="2" class="btn btn-danger mr-2">{{carray_1}}فشلت</button> <!-- زر "تحتاج إلى مال" --> <button type="submit" name="CHOOSE" value="3" class="btn btn-warning mr-2">تحتاج إلى مال{{carray_2}}</button> <!-- زر "تحتاج إلى أدوات" --> <button type="submit" name="CHOOSE" value="4" class="btn btn-info mr-2">{{carray_3}}تحتاج إلى أدوات</button> <!-- زر "مؤجل" --> <button type="submit" name="CHOOSE" value="5" class="btn btn-secondary">{{carray_4}}مؤجل</button> <!-- زر "اخر نجاح" --> <button type="button" class="btn btn-success mr-2">اخر نجاح</button> <!-- زر "اخر فشل" --> <button type="button" class="btn btn-danger mr-2">اخر فشل</button> </div>
内容的提问来源于stack exchange,提问作者mohamed sadik
相关产品推荐
相关产品推荐

