相关疑难解决方法(0)

如何将计算字段添加到Django模型

我有一个简单的Employee模型,其中包括firstname, lastnamemiddlename领域.

在管理员方面,可能在其他地方,我想将其显示为:

lastname, firstname middlename
Run Code Online (Sandbox Code Playgroud)

对我来说,这样做的合理位置是在模型中通过创建一个计算字段:

from django.db import models
from django.contrib import admin

class Employee(models.Model):
    lastname = models.CharField("Last", max_length=64)
    firstname = models.CharField("First", max_length=64)
    middlename = models.CharField("Middle", max_length=64)
    clocknumber = models.CharField(max_length=16)
    name = ''.join(
        [lastname.value_to_string(),
        ',',
         firstname.value_to_string(),
        ' ',
         middlename.value_to_string()])

    class Meta:
        ordering = ['lastname','firstname', 'middlename']

class EmployeeAdmin(admin.ModelAdmin):
    list_display = ('clocknumber','name')
    fieldsets = [("Name", {"fields":(("lastname", "firstname", "middlename"), "clocknumber")}),
        ]

admin.site.register(Employee, EmployeeAdmin)
Run Code Online (Sandbox Code Playgroud)

最终我认为我需要的是将名称字段的值作为字符串.我得到的错误是value_to_string() takes exactly 2 arguments (1 given).字符串想要的值self, obj …

python django-models django-admin

46
推荐指数
4
解决办法
5万
查看次数

注释两个字段的总和相乘

我有三个模型,简化为例子:

class Customer(models.Model):
    email = models.CharField(max_length=128)

class Order(models.Model):
    customer = models.ForeignKey(Customer)
    order_status = models.CharField(blank=True, max_length=256)

class Lineitem(models.Model):
    order = models.ForeignKey(Order)
    quantity = models.IntegerField(blank=True)
    price = models.DecimalField(max_digits=6, decimal_places=2)
Run Code Online (Sandbox Code Playgroud)

我想查询客户(可能使用过滤器)并注释他们花费的总额(即总和(价格*数量))

我试过了:
Customer.objects.filter(something).annotate(total_spent=Sum(F('order__lineitem__quantity') * F('order__lineitem__price')))

似乎Sum()不能与F()表达式一起使用.还有另一种方法吗?

django django-models

36
推荐指数
2
解决办法
2万
查看次数

查找日期和时间少于24小时的对象

我有两个领域的模型:

class Event(models.Model):
    date = models.DateField(_(u'Date'))
    time = models.TimeField(_(u'Time'))
Run Code Online (Sandbox Code Playgroud)

我需要找到日期和时间在24小时后的所有对象.

我可以在使用DateTime字段时执行此操作,但我不确定如何在字段分隔时实现此目的.提前致谢.

python django django-models django-orm

12
推荐指数
3
解决办法
1195
查看次数

标签 统计

django-models ×3

django ×2

python ×2

django-admin ×1

django-orm ×1