扩展Django Admin以包含相关字段

时间:2012-08-21 21:34:48

标签: django django-models django-admin

我正在尝试扩展Django管理员,将相关字段添加到模型添加/更改表单中,这些表单无法由Inlines处理。

我的简化模型如下:

class Token(models.Model):
    guid = models.CharField(max_length=38, blank=False)

class Package(models.Model):
    tokens = models.ManyToManyField(Token)

class UserToken(models.Model):
    user = models.ForeignKey(User)
    token = models.ForeignKey(Token)
    value = #Some instance specific value
    expires = models.DateField(blank=False)

class UserPackage(models.Model):
    user = models.ForeignKey(User)
    package = models.ForeignKey(Package)

    expires = models.DateField(blank=False)

我需要做的是创建UserPackage以使用Package上的令牌ManyToMany关系来创建UserTokens。每个UserToken可能具有不同的实例值。

在UserPackage的管理添加/更改页面中填写令牌和值字段是理想的。该列表需要预先填入所有可能的条目,这就是为什么内联在这里看起来不是一个好选择。

当前解决方案

  1. 期待“?package =”param on add URL

  2. 覆盖ModelAdmin.add_view(self,request,form_url ='',extra_context = None)以读取URL参数并生成令牌对象列表

  3. 扩展模型的change_form模板以创建

  4. 覆盖ModelAdmin.save_model(self,request,obj,form,change)以查看request.data []以查找添加的字段。 (当然,它们实际上不会出现在ModelForm中。)

  5. 问题

    这有效,但看起来非常h​​acky。在Django 1.4中有没有更清晰的解决方案来实现它?

0 个答案:

没有答案