2012-04-22 72 views
0

我创建了其模型有这样一个作者字段一个博客应用程序博客管理员的空间自动选择为了获得添加的文章采取记录的名字用户。怎么样?这样:作者外键字段

def formfield_for_foreignkey(self, db_field, request, **kwargs): 
    if db_field.name == 'author': 
     kwargs['initial'] = request.user.id 
     return db_field.formfield(**kwargs) 

    return super(PostAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs) 

那么,在添加视图中,对应于作者字段的选择输入显示用户名。我想要这个select显示first_name + last_name字段而不是用户名字段。最后,当我在这个任务中取得成功时,我想隐藏这个选择。记录的用户不得更改向博客发送条目的用户。

我已经好几个小时在这方面努力没有成功。请帮助!

非常感谢队友。使笔者外键字段显示User.first_name + User.last_name

回答

2

的一种方法是使用代理模式为用户作者:

# your_app.models 
from django.contrib.auth.models import User 


class AuthorUser(User): 
    class Meta: 
     proxy = True 

    def __unicode__(self): 
     return '%s %s' % (self.first_name, self.last_name) 


class YourModel(models.Model): 
    author = models.ForeignKey(AuthorUser) 

要使场走开,你可以简单地将其标记为可编辑= False。希望能帮助你。

+0

谢谢!我的问题解决了。上帝保佑Stackoverflow。 – 2012-04-22 16:40:45

+0

哈哈。真棒。很高兴我能帮上忙。 – Brandon 2012-04-23 02:40:06