在 Django 管理屏幕中显示相关外键数据时出现问题

发布于 2024-09-24 15:35:42 字数 755 浏览 3 评论 0原文

为了在我的管理列表视图中显示外键数据,我创建了一个可调用的:

def next_date(self):
    EvDateObj = EventDate.objects.filter(event__id__exact=self.id)
        .exclude(event_date__lt=datetime.date.today())
        .order_by('event_date')[:1]
    return EvDateObj

这在列表视图中显示为:

[<EventDate: 25 September 2010>]

这是 EventDate 模型的 unicode 字符串(2010 年 9 月 25 日),周围有一些 django 生成的对象内容: [< EventDate ______ >]

如果我修改可调用返回语句以尝试获取日期本身:

return EvDateObj.event_date 

或者

return EvDateObj.event_date.strftime("%d %B %Y")

管理列表视图只是显示:

(None)

有什么想法吗?我不确定如何继续,因为我可以获得所需的对象,但无法在不触发“(无)”结果的情况下访问其任何属性。

To display foreignkey data in my admin list view, I created a callable:

def next_date(self):
    EvDateObj = EventDate.objects.filter(event__id__exact=self.id)
        .exclude(event_date__lt=datetime.date.today())
        .order_by('event_date')[:1]
    return EvDateObj

This shows in the list view as:

[<EventDate: 25 September 2010>]

Which is the unicode string for the EventDate model (25 Sept 2010), with some django-generated object stuff around it: [< EventDate ______ >]

If I modify the callable return statement to try and just get the date itself:

return EvDateObj.event_date 

or

return EvDateObj.event_date.strftime("%d %B %Y")

the admin list view simply shows:

(None)

Any thoughts? I am unsure how to proceed because I can get the desired object, but cannot access any of its properties without triggering the "(None)" result.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

面犯桃花 2024-10-01 15:35:43

您是否尝试过:

    EvDateObj = EventDate.objects.get(event__id__exact=self.id)
    .exclude(event_date__lt=datetime.date.today())
    .order_by('event_date')[:1]

objects.filter() 始终返回一个 QuerySet(类似于 Python 列表),即使只有 1 个结果。 EDateObj.objects.get() 将返回一个对象。

或者你可以这样做:

return EvDateObj[0]

我自己还没有尝试过,所以希望这对你有用。

Have you tried:

    EvDateObj = EventDate.objects.get(event__id__exact=self.id)
    .exclude(event_date__lt=datetime.date.today())
    .order_by('event_date')[:1]

objects.filter() always returns a QuerySet (similar to a Python List), even if there is only 1 result. EDateObj.objects.get() will return an object.

Alternatively you can do:

return EvDateObj[0]

I haven't tried it myself, so hope this works for you.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文