【问题标题】:Django order_by according to inline's updated timeDjango order_by 根据内联的更新时间
【发布时间】:2014-09-03 05:34:24
【问题描述】:

我正在尝试根据内联对象的更新时间列出我的对象。 这是我的models.py:

class Baslik(models.Model):
    user = models.ForeignKey(User, null=True, blank=True)
    title = models.CharField(max_length=50)
    slug = models.SlugField()
    timestamp = models.DateTimeField(auto_now_add=True, auto_now=False)
    updated = models.DateTimeField(auto_now_add=False, auto_now=True)
    active = models.BooleanField(default=True)

    def __unicode__(self):
        return str(self.title)


    def get_absolute_url(self, ):
        return reverse('baslik', args=[self.slug])


class Entry(models.Model):
    user = models.ForeignKey(User, null=True, blank=True)
    baslik = models.ForeignKey(Baslik, null=True, blank=True)
    icerik = models.TextField(max_length=50000)
    timestamp = models.DateTimeField(auto_now_add=True, auto_now=False)
    updated = models.DateTimeField(auto_now_add=False, auto_now=True)

    def __unicode__(self):
        return str(self.icerik)

如您所见,我通过 ForeignKey 将 Entry 模型与 Baslik 模型连接起来。 我使用views.py的这一部分根据对象创建的时间列出对象:

def hepsi(request):
    basliklar = Baslik.objects.filter(active=True).order_by('-updated')

    return render_to_response("base.html", 
                               locals(), 
                               context_instance=RequestContext(request))

我怎样才能达到我的目标。任何意见都会有所帮助。谢谢。

【问题讨论】:

    标签: python django django-models foreign-keys


    【解决方案1】:

    这个版本的 hepsi 函数有效。

    def hepsi(request):
    
        basliklar = Baslik.objects.filter(active=True).order_by('-updated')
    
    
    
        gunlist = []
    
        for i in basliklar:
    
            entryler = i.entry_set.all()
            ent1 = entryler.latest('id')
            ent2 = ent1.updated
            ent3 = str(ent2).split(" ")
            zaman1 = date.today()
            zaman2 = str(zaman1).split(" ")
            zamangun = zaman2[0]
            entgun = ent3[0]
    
            if entgun == zamangun:
                gunlist.append(i)
    
    
        cta = {'basliklar': basliklar, 'entryler': entryler, 'ent1': ent1, 'ent2': ent2, 'entgun': entgun, 'zamangun': zamangun, 'gunlist': gunlist}
    
        return render(request, "base.html", cta)
    

    【讨论】:

      【解决方案2】:

      如果您想按 baslik 的更新时间对条目进行排序,语法为:

      order_by("-baslik__updated")

      注意双下划线。

      【讨论】:

        猜你喜欢
        • 2013-02-03
        • 2023-03-29
        • 1970-01-01
        • 2011-09-24
        • 1970-01-01
        • 2015-05-15
        • 1970-01-01
        • 1970-01-01
        • 2020-12-04
        相关资源
        最近更新 更多