You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 21:53:16