标签: django-admin

在django中测试admin.ModelAdmin

我试图找出测试的最佳方式admin.ModelAdminadmin.py.具体来说,我重写了save_model()我想测试的功能.根据我所做的研究,我发现的唯一解决方案是编写请求/响应测试,然后查询数据库.

django unit-testing django-admin

32
推荐指数
3
解决办法
2万
查看次数

在django admin中控制TextArea小部件的大小

我设法TextArea用两种不同的方式覆盖django管理界面中Widget 的外观:

使用formfield_overrides

admin.py:

class RulesAdmin(admin.ModelAdmin):
formfield_overrides = {
    models.TextField: {'widget': Textarea(
                       attrs={'rows': 1,
                              'cols': 40})},
}

...
admin.site.register(Rules, RulesAdmin)
Run Code Online (Sandbox Code Playgroud)

这种方式有点过分,因为它会改变该模型的所有TextField.

使用自定义表单:

forms.py:

from django.forms import ModelForm, Textarea
from TimePortal.models import Rules


class RulesModelForm(ModelForm):
    class Meta:
        model = Rules
        widgets = {
            'parameters': Textarea(attrs={'cols': 30, 'rows': 1}),
   }
Run Code Online (Sandbox Code Playgroud)

admin.py

from AppName.forms import RulesModelForm

class RulesAdmin(admin.ModelAdmin):

    form = RulesModelForm
Run Code Online (Sandbox Code Playgroud)

这两种解决方案调整TextArea.但是,在两种解决方案中,文本区域的实际大小超过1行(实际上是2行).以下是呈现的HTML的外观:

    <div class="form-row field-parameters">
            <div>
                <label for="id_parameters" class="required">Parameters:</label>
                <textarea id="id_parameters" rows="1" cols="30" name="parameters">{}</textarea> …
Run Code Online (Sandbox Code Playgroud)

css python django django-admin

32
推荐指数
1
解决办法
2万
查看次数

如何修改django以创建"查看"权限?

我最近开始使用django管理一个使用twisted.web多年来有机增长的大型现有应用程序.我开始尝试使用django,它是自动管理界面,我对结果非常满意.

对我来说似乎缺少的一件事是能够为用户提供对数据的只读访问权限.例如,我们有一个角色,允许人们登录并创建采购订单.他们还需要能够查看,但不能编辑其他客户端或产品数据.

如何在django admin中创建"查看"权限,以便用户可以修改某些表的数据,同时只读取其他表的访问权限?

更新:Django Admin似乎给了我CRUD界面的CUD.如何获取具有关联权限和组的只读部分?

更新2010年2月12日:Django 1.2现在将包含只读.详情如下.


我猜我回答了自己的问题.将内容下移到下面的真实答案.

django django-admin django-permissions

31
推荐指数
4
解决办法
2万
查看次数

Django管理员操作中的自定义错误消息

我编写了自定义管理操作,基本上QuerySet.update()对模型中的某些字段执行操作.有些时候不应该允许这些操作完成 - 相反,它们应该显示错误而不做任何事情.我试过了message_user,但是它显示了一个绿色的复选标记,而我希望它显示Django管理员错误信息.

我在网上找到的解决方案是使用a ModelForm,但我不认为这适用于这种情况,因为这里的一切都发生在管理员更改列表页面上.

django django-models django-admin

31
推荐指数
3
解决办法
2万
查看次数

django管理员操作没有选择对象

是否可以为django管理员创建一个自定义管理操作,不需要选择一些对象来运行它?

如果您尝试在不选择对象的情况下运行操作,则会收到以下消息:

Items must be selected in order to perform actions on them. No items have been changed.
Run Code Online (Sandbox Code Playgroud)

有没有办法覆盖此行为并让操作仍然运行?

django django-admin

31
推荐指数
3
解决办法
1万
查看次数

在Django管理页面中注册应用程序中的每个表/类

我有一个名为app的应用程序doors,我models.py的应用程序有10个表/类.在我的下admin.py,如何在文件中注册每个模型models.py

例如,目前我必须对其进行硬编码:

from django.contrib import admin
from doors.models import *

admin.site.register(Group)
admin.site.register(Item)
admin.site.register(ItemType)
admin.site.register(Location)
admin.site.register(Log)
admin.site.register(Order)
admin.site.register(Property)
admin.site.register(User)
admin.site.register(Vendor)
Run Code Online (Sandbox Code Playgroud)

有没有办法我可能会找到每个类models.py并循环并注册每个类?或者是否有一些我可以用于Django的通配符?

django django-admin

31
推荐指数
4
解决办法
1万
查看次数

如何检查(在模板中)用户是否属于某个组

如何检入模板用户是否属于某个组?

有可能在view生成template但是如果我想检查这base.html是一个扩展模板(它没有它自己的视图功能)怎么办?

我的所有模板都扩展了,base.html所以在每个模板中检查它都不好view.

base.html包含上部杆,它应包含在其中的按钮根据group登录用户是(客户,销售商).

在我的base.html是:

{% if user.is_authenticated %}
Run Code Online (Sandbox Code Playgroud)

这是不够的,因为我必须采取不同的方式对用户Customers和用户采取不同的行动Sellers.

所以我想要的是:

{% if user.in_group('Customers') %}
 <p>Customer</p>
{% endif %}
{% if user.in_group('Sellers') %}
<p>Seller</p>
{% endif %}
Run Code Online (Sandbox Code Playgroud)

python django django-admin django-permissions

31
推荐指数
7
解决办法
2万
查看次数

Django Admin - save_model方法 - 如何检测字段是否已更改?

我试图覆盖Django管理对象上save_model方法,以防止用户更改某个字段.但是我无法找到方法来确定该方法中的字段是否已更改.

到目前为止,这是我的代码:

def save_model(self, request, obj, form, change):
    if change: 
        if obj.parking_location == form.cleaned_data['parking_location']:
            super(MyVehiclesAdmin, self).save_model(request, obj, form, change)
        else:
            messages.error(request, 
                "The Parking Location field cannot be changed.")
Run Code Online (Sandbox Code Playgroud)

问题是obj.parking_location,而form.cleaned_data ['parking_location']都有新值.(这可能是Django中的一个错误吗?看起来obj应该包含预保存值).无论如何,还有另一种方法可以实现这一目标吗?

(我在Django 1.2上)

django django-admin

30
推荐指数
3
解决办法
3万
查看次数

django-admin:添加额外的行总计

我正在使用标准的django管理模块来显示行列表.其中一列是数字字段.我想显示一个额外的'总计'行,其中大部分列都是空白的,除了数字列,它应该是所有对象的总和.

在管理模块中是否有一种简单的方法可以做到这一点,或者我最好为它制作自定义视图?

我正在使用Django 1.2.

python django django-admin django-views django-1.2

30
推荐指数
5
解决办法
1万
查看次数

在Django Admin中将ManyToManyWidget添加到ManyToManyField的反向

假设我在Django 1.4中有一个简单的博客应用程序:

class Post(models.Model):
    title = …
    published_on = …
    tags = models.ManyToManyField('Tag')

class Tag(models.Model):
    name = …
Run Code Online (Sandbox Code Playgroud)

即帖子有很多标签.在Django管理,我得到一个不错的<select multi>,如果我包括tagsfieldsPostAdmin.有没有一种简单的方法可以包含帖子列表(简单<select multi>)TagAdmin?我试图把fields = ['name', 'posts']TagAdmin,就有了一个ImproperlyConfigured错误.(结果相同post_set).

我对Django很好,所以可以提供一个合适的AdminForm和Admin对象,但我希望有一个Right Way™来做.

python django django-models django-admin

30
推荐指数
3
解决办法
5882
查看次数