【问题标题】:Issue with Django Inline formDjango内联表单的问题
【发布时间】:2011-04-01 14:00:18
【问题描述】:

我已经在 FoobarAdmin 中附加了 TestInline,这个东西运行良好,但我希望为 added_by 字段预先填充登录用户

from django.contrib import admin
from django.contrib.auth.models import User

class Test(models.Model):

    description = models.TextField()
    added_on = models.DateTimeField(auto_now_add=True)
    added_by = models.ForeignKey(User, related_name='added_by',)

class TestInline(admin.TabularInline):
        model = Test
        extra = 1

class FoobarAdmin(admin.ModelAdmin):
    inlines = [TestInline,]

admin.site.register(Foobar, FoobarAdmin)

请让我知道是否可以为 added_by 字段预填充用户

【问题讨论】:

    标签: python django django-admin


    【解决方案1】:

    请参阅管理文档中的 prepopulated_fields

    如果我正确理解您的需求,我认为this article by James Bennett 可以很好地解决这个问题。

    最后(如果您还没有看到它们),在预填充管理字段中有 two other informative posts

    【讨论】:

    • 我已经检查过了,但问题是 added_by 字段是用户的外键,文档说“prepopulated_fields 不接受 DateTimeField、ForeignKey 或 ManyToManyField 字段。”你能帮我解决这个问题吗?
    • 似乎首选的方法是用一个使用 Javascript/JQuery 来做你需要的事情来覆盖相关的管理表单。有几篇 StackOverflow 帖子,这里似乎最有用:stackoverflow.com/questions/2799857/…
    • 但是(我还没有尝试过,所以只是想知道)也许你可以尝试使用 'default' 代替:docs.djangoproject.com/en/dev/ref/models/fields/#default
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-17
    • 2019-05-15
    • 1970-01-01
    • 2021-11-27
    • 2011-07-11
    • 2023-04-09
    • 2017-03-28
    相关资源
    最近更新 更多