2010-08-20 76 views
1

我在FoobarAdmin连接TestInline,这个东西效果很好,但我想登录的用户可预先填充的added_by场问题与Django的内联形式

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字段

回答

1

请参阅管理员文档中的prepopulated_fields

如果我明白你的需要,我认为this article by James Bennett解决了这个问题。

最后(如果您还没有看到它们),有预填充管理字段上的two otherinformative posts

+0

我已经检查,但问题是added_by字段是用户的外键,文档说“prepopulated_fields不接受DateTimeField,ForeignKey或ManyToManyField字段。” 你能帮我解决这个问题吗? – Suhail 2010-08-20 11:19:21

+0

似乎最受欢迎的方式是用一个使用Javascript/JQuery来执行您所需的操作来覆盖相关的管理表单。这里有几个StackOverflow的帖子,这里是一个似乎最有用的帖子:http://stackoverflow.com/questions/2799857/filtering-foreign-keys-with-ajax-in-django-admin – 2010-08-20 11:46:51

+0

然而(我避难试过这个,所以只是想知道)也许你可以尝试使用'默认',而不是:http://docs.djangoproject.com/en/dev/ref/models/fields/#default – 2010-08-20 11:58:26