Django 1.3 - 管理员 - “添加条目”按钮 - 复制先前模型实例中的字段

时间:2011-10-27 19:14:34

标签: django django-models django-admin

由于某种原因找不到如何做到这一点。

当单击Admin页面上的“Add_model Entry”按钮时,我希望用用户放入他们创建和保存的上一个模型实例的相同值填充大部分字段。 (我不关心哪些用户,只关心最后一个(最年轻)保存的模型实例)。

使用案例:用户将以批处理模式创建此模型的实例,例如10个非常相似的项目,因此如果大多数信息在每次点击“添加条目”按钮时预先填充,将会非常有用。如果由于某种原因,它们可能每天执行3-4次,并且每个批次在前一批次的字段中具有显着不同的值,但批次中的每个实例都是相似的。因此,我想到了预先填充最近保存的值。

Contrived Example:


class person:<br>
    name= CharField       =>   (obvious)<br>
    interests= CharField  =>   Example (fly, skate, swim)<br>
    age_range= CharField  =>   Example (old, middle, young)<br>

<小时/>

批次1 =飞行且年老的人

Jim Smith, Fly, Old
Sara Smith, Fly, Old
Larry Jones, Fly, Old

<小时/>

批次2 =选手

Sam Samuelson, Skate, Young
Alfred Bob, Skate, Old
Jon Jon, Skate, Old

每批次都有很多相似之处,但批次可能会有很大不同。所以我猜我需要一个带有新id的先前保存模型的副本(这里没有继承处​​理,但有ForeignKeys)。如何将其添加到“添加条目”按钮/站点?

2 个答案:

答案 0 :(得分:0)

您可以为ModelForm创建一个自定义ModelAdmin,其__init__函数会检查是否提供了instance(如果有的话)意味着您正在编辑现有对象而不是创建新对象),如果没有,则查询最新对象,然后使用您从该实例中提取的值填充initial dict。

答案 1 :(得分:0)

作为第二种选择,您还可以使用Django Admin Save As功能。这不是您正在寻找的,但它允许用户转到上一个条目,编辑一些字段,然后将其保存为新对象,这将接近相同的效果。