如何在管理面板中使用动态数据?

时间:2011-07-19 15:00:08

标签: django django-models django-admin

class Message(models.Model):

    date = models.DateField()
    user = models.ForeignKey(UserEx)
    groups = models.ManyToManyField(Group)
    main_category = models.ForeignKey(MainCategories)
    sub_category = models.ForeignKey(SubCategories)

我想要动态填充一些字段。所以,我对此有一些疑问。

  1. 如何访问此字段?显然,默认字段 model不能用于动态数据(我尝试创建默认字段 - 没有错误,没有结果)。
  2. 如何过滤群组?我的用户与组具有相同的字段,因此我希望允许他仅编辑和显示仅针对该组的消息。
  3. 嗯,最后一个问题 - 也许创建自己的管理面板会更容易?但是在管理面板中考虑实现排序和显示事件真是太可怕了,这真的很舒服。

1 个答案:

答案 0 :(得分:3)

你可以通过覆盖ModelForm来实现:

class MessageAdminForm(forms.ModelForm):
    def __init__(self, *arg, **kwargs):
        super(MessageAdminForm, self).__init__(*args, **kwargs)

        # set initial values this way
        self.initial['user'] = User.objects.get(username='bob')

        # set choices this way
        self.fields['groups'].choices = [(g.id, g) for g in Groups.objects.all()]

class MessageAdmin(admin.ModelAdmin):
    form = MessageAdminForm
    # other stuff here