【问题标题】:python/django: model object has no attribute 'prefetch_related'python/django:模型对象没有属性“prefetch_related”
【发布时间】:2017-02-10 14:27:05
【问题描述】:

我创建了一个模型“VehicleDetails”,用户可以在其中填写车辆的详细信息,还创建了另一个模型“TripStatus”,他可以在其中更新车辆位置。我想获得我在下面的代码中所做的最新位置。我在视图中使用 prefetch_related 来返回特定车辆的位置值。但是,在运行服务器后,它会引发错误:“TripStatus 对象没有属性 'prefetch_related'”。我将不胜感激帮助我解决这个问题。 模型.py:

class VehicleDetails(models.Model):
    Vehicle_No = models.CharField(max_length=20)

class TripStatus(models.Model):
    vehicledetails = models.ForeignKey(VehicleDetails, related_name='statuses')
    CHOICES = (('Yet to start', 'Yet to start'),('Trip starts', 'Trip starts'), ('Chennai','Chennai'), ('Vizag', 'Vizag'), ('Kolkata', 'Kolkata'))
    Vehicle_Status = models.CharField(choices=CHOICES, default="Yet to start", max_length=20)
    statustime = models.DateTimeField(auto_now=False, auto_now_add=True)

views.py:

def status(request):
    tripstatus = TripStatus.objects.all().latest('statustime').prefetch_related('statuses')
    context = {
        "tripstatus": tripstatus,
    }
    return render(request, 'loggedin_load/active_deals.html', context)

模板:

{% for status in vehicledetails.statuses.all %}
{{status.Vehicle_Status}}
{% endfor %}

【问题讨论】:

    标签: python django django-models django-templates django-views


    【解决方案1】:

    prefetch_related 作用于查询集对象。最新返回单个模型而不是查询集。

    这应该可行:

    tripstatus = TripStatus.objects.all().prefetch_related('statuses').latest('statustime')
    

    【讨论】:

    • 现在是:在 TripStatus 对象上找不到“状态”,“状态”是 prefetch_related() 的无效参数。
    • pefetch_related 加载外键表以提高性能。您的 TripStatus 模型上实际上没有 statuses 外键,因此只需删除 prefetch_related 调用。
    猜你喜欢
    • 2015-11-29
    • 2018-03-10
    • 1970-01-01
    • 1970-01-01
    • 2016-01-10
    • 1970-01-01
    • 2014-05-07
    • 2014-10-24
    • 2016-12-08
    相关资源
    最近更新 更多