首页 新闻 会员 周边 捐助

django的User的修改模块如何显示第三个表的信息

0
悬赏园豆:5 [已解决问题] 解决于 2016-04-02 13:32
class User(models.Model): 
    a = models.ForeignKey('B')
  
  
class B(models.Model): 
    b = models.ForeignKey('C') 
  
class C(models.Model): 

    name = models.CharField(max_length=80, )

class useradmin(admin.ModelAdmin)当中应该怎么修改

 

意发并行的主页 意发并行 | 初学一级 | 园豆:3
提问于:2016-04-01 11:09
< >
分享
最佳答案
0

我擦,我刚才回答的不见了?

收获园豆:5
Rich.T | 老鸟四级 |园豆:3440 | 2016-04-01 11:34

....什么情况?

意发并行 | 园豆:3 (初学一级) | 2016-04-01 11:34
class User(models.Model):
    a = models.ForeignKey('B')
        
    def my_pro(self):
        return C.objects.get(user_id=self.id).name

    c_name = property(my_pro)

你的C和User之间需要有一定的关系,不然没办法查询

Rich.T | 园豆:3440 (老鸟四级) | 2016-04-01 11:37

@Rich.T: 哦,是这样啊,在model.admin当中直接访问c_name就可以查询了吗?

意发并行 | 园豆:3 (初学一级) | 2016-04-01 11:39

@落花无情人葬月: 你是要查询还是要显示

Rich.T | 园豆:3440 (老鸟四级) | 2016-04-01 11:44

@Rich.T: 显示,显示到admin的A表当中,

(_('Personal info'), {'fields': ('c_name','first_name', 'last_name', 'company', 'email',)}),

我这么写会报错

意发并行 | 园豆:3 (初学一级) | 2016-04-01 11:46

@落花无情人葬月: 

首先你A表需要和C表有关系,不然怎么查询

class useradmin(admin.ModelAdmin):
  list_display = ['字段', 'c_name']

Rich.T | 园豆:3440 (老鸟四级) | 2016-04-01 11:48

@Rich.T: list_display确实起效果了,不过我想在修改页面也显示c_name的信息

 

fieldsets = (
        (None, {'fields': ('username', 'password')}),
        (_('Personal info'), {'fields': ('first_name', 'last_name', 'company', 'email',)}),
        # ('级别', {'fields': ('compclass', )}),
        (_('Permissions'), {'fields': ('is_active', 'is_staff', 'is_superuser',
                                       'groups', 'user_permissions')}),
        (_('Important dates'), {'fields': ('last_login', 'date_joined')}),
    )
意发并行 | 园豆:3 (初学一级) | 2016-04-01 11:54

@Rich.T: 

FieldError at /admin/auth/user/11/change/

Unknown field(s) (c_name) specified for User. Check fields/fieldsets/exclude attributes of class UserAdmin.

list_display正常显示,页面当中的会报错

意发并行 | 园豆:3 (初学一级) | 2016-04-01 12:01

@落花无情人葬月: 只需要有外键关系 会自动加到修改页面

Rich.T | 园豆:3440 (老鸟四级) | 2016-04-01 12:27

@Rich.T: 并没有

意发并行 | 园豆:3 (初学一级) | 2016-04-01 13:18

@Rich.T: 

在A表下面加入下面代码

def __unicode__(self): return ('name:%s'%(self.company.compclass.name))

结果只显示在头部,我想把它显示成可以修改的

意发并行 | 园豆:3 (初学一级) | 2016-04-01 15:00

@落花无情人葬月: 你在需要表单修改的model里这样写

比如你要在B里修改A,B中有一个字段是A的外键

a = models.ForeignKey(A)

Rich.T | 园豆:3440 (老鸟四级) | 2016-04-01 16:46

@Rich.T: 谢谢你的回答,我的问题已经解决,原因是我的数据结构没有设计好,导致遇到这个问题,不过你的回答对我很有帮助

意发并行 | 园豆:3 (初学一级) | 2016-04-02 13:33
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册