如何在django admin上添加readonly内联

时间:2013-06-14 22:43:01

标签: python django admin

我正在使用django 1.4并且我有一个很多2字段,所以在创建管理站点时我想将此字段添加为内联,这里有一些代码:

class SummaryInline(admin.TabularInline):
    model = ParserError.summaries.through


class MyClassAdmin(admin.ModelAdmin):
    list_display = ('classifier', 'name', 'err_count', 'supported')
    fields = ('classifier', 'name', 'err_count', 'err_classifier', 'supported')
    inlines = (SummaryInline,)
    readonly_fields = ('classifier', 'err_count')

所以我的问题是,如何才能使内联字段只读?

4 个答案:

答案 0 :(得分:52)

经过一段时间试图找到我想出的名字感谢this answer,所以我检查了self.opts.local_fields的名字并找到了中间表的名称并将其添加到{{3} },将readonly_fields设置为False。

class SummaryInline(admin.TabularInline):
    model = ParserError.summaries.through
    readonly_fields = ('myclasssummary',)
    can_delete = False

非常简单,但我花了一些时间,所以我发现在这里添加它是一个好主意。

答案 1 :(得分:28)

此外,如果您不希望能够添加/删除行,则可以添加这些定义。

<?php 
    $i=1;
    foreach($designation as $desig)
{
    ?>

    <tr>
        <td><?php echo $i  ?></td>
        <td><?php echo $desig['name']; ?></td>
        <td><a href="<?php echo base_url('index.php/designation/delete_designation/'.$desig[$i]->dkey);?>">
                <input type="button" value="Delete" class="btn btn-danger"/>
            </a>
        <td class="numeric"><a id= "<?php echo $desig[$i]->dkey; ?>"  onclick="edit_designation('<?php echo $designation[$i]->dkey; ?>')" data-target="#myModal" data-toggle="modal" style="color:#ffffff;" href="#myModal"><button class="btn blue" type="button">Edit</button>

    </tr>
    <?php
    $i++;
}
?>

答案 2 :(得分:2)

感谢Keval Prabhu

class UnitsInline(admin.TabularInline):
    model = Units
    extra = 0
    verbose_name = 'Units'
    verbose_name_plural = 'Units of company'

    **def has_add_permission(self, request, obj=None):
        return False
    def has_delete_permission(self, request, obj=None):
        return False**

答案 3 :(得分:2)

您可以通过添加以下内容将整行设置为只读:

class UnitsInline(admin.TabularInline):

    def has_change_permission(self, request, obj=None):
        return False

这将防止任何人从管理员那里编辑条目