Django日期排序错误

2024-09-29 01:35:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个django模型-

class CompanyForLineCharts(models.Model):
  company = models.TextField(null=True)

class LineChartData(models.Model):
  foundation = models.ForeignKey(CompanyForLineCharts, null=True)
  date = models.DateField(auto_now_add=False)
  price = models.FloatField(null=True)

以及这些模型的视图-

arr = []
for i in range(len(entereddate)):
  date = entereddate[i]
  if entereddate[i] in dates:
    foundat = (dates.index(entereddate[i]))
  allprices = Endday.objects.raw("SELECT id, eop FROM drf_endday where company=%s", [comp[i]])
  allendofdayprices = ''
  for a in allprices:
    allendofdayprices=(a.eop)
    tempprices = allendofdayprices.split(',')
    stringprices = tempprices[foundat:]
    finald = dates[foundat:]
    finalp = []
    for t in range(len(stringprices)):
      finalp.append(float(re.sub(r'[^0-9.]', '', stringprices[t])))
      company = CompanyForLineCharts.objects.get(company=comp[i])
    for j in range(len(finalp)):
      arr.append(
         LineChartData(
           foundation = company,
           date = finald[j],
           price = finalp[j]
         )
      )
LineChartData.objects.bulk_create(arr)

其中,entereddate是用户输入的日期列表(日期对象),dates是日期的大列表(也是按时间顺序排列的日期对象),tempprices是对应于dates列表的价格列表。你知道吗

我已经为这些设置了序列化程序-

class LineChartDataSerializer(serializers.ModelSerializer):
  class Meta:
    model = LineChartData
    fields = ('date','price')

class CompanyForLineChartsSerializer(serializers.ModelSerializer):
 data = LineChartDataSerializer(many=True, source='linechartdata_set')
   class Meta:
   model = CompanyForLineCharts
   fields = ('company', 'data')

如您所见,LineChartData模型通过foundationCompanyForLineCharts模型相关联。你知道吗

现在我面临的问题是,当drf序列化这些字段时,日期的顺序就会混乱。你知道吗

所以我也试过了-

  • 在视图中-

    xy = zip(finald, finalp) sort = sorted(xy) finald = [x[0] for x in sort] finalp = [x[1] for x in sort]

    好吧,这并没有改变串行输出的顺序。

  • 所以我试着订购序列化程序-

    order_by = (('date',)) ordering = ['-date']

但没有一个成功。现在该怎么办?你知道吗


Tags: in模型true列表fordatemodelscompany
1条回答
网友
1楼 · 发布于 2024-09-29 01:35:50

@edit我很抱歉,但是它不应该改变任何东西,我刚刚检查了文档,auto_now_addauto_now的默认值是False

DateField(auto_now_add=False)->;DateField(auto_now_add=False, auto_now=False)应该能解决你的问题。
如果auto_now为真,那么每次调用.save()方法时它都会设置date。auto_now_add调用构造函数时也要这样做。
auto_now在需要上次修改日期时使用,而auto_now_add在需要创建日期时使用。
您没有任何这些原因,因此需要将两个参数都设置为False

相关问题 更多 >