标签: admin

内联模型表单是否发出 post_save 信号?(django)

所以我有两个与外键相关的模型(表)。在管理中,编辑页面显示第一个模型(假设 ModelOne)以及第二个模型 ModelTwo (TabularInline) 的相关实例。

我想要的是在更改第二个模型时执行一些额外的操作。我可以用 ModelTwo 上的 post_save 信号来做到这一点。但是,仅当我从模型自己的编辑页面(即不在 ModelOne 的内联中)保存模型时,才会调用 post_save 信号。

有没有办法在 ModelTwo 的内联表单上附加 post_save 信号?

...作为一种解决方法,我向 ModelTwo 添加了一些自定义验证,无论它是否内联都会被调用),以调用我想要的方法。但是,此设置引起的问题是,如果我创建 ModelOne 的新实例并同时创建 ModelTwo 的实例,我将无法访问关联两个表的新实例的主键(外键)(因为它尚未保存)。主键是我需要的东西。

我还尝试直接向 ModelOne 添加 post_save 信号(以便我可以获得新实例的 PK),但 post_save 信号似乎没有传递 ModelTwo 的数据(为什么要这样做,无论如何?)

那么解决这个问题的方法是什么?内联模型会发出信号吗?有没有办法在保存之前访问新实例的PK?

django inline admin django-models

5
推荐指数
2
解决办法
4649
查看次数

drupal 隐藏非管理员用户的帐户电子邮件和密码更改

有没有办法阻止用户在注册后更改他的密码/电子邮件/用户名?

tabs drupal login admin edit

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

Django Taggit - 标签关联未从自定义管理表单中保存

在这里发疯......从外壳内,我可以这样做:

product.tags.add("a_new_tag")
Run Code Online (Sandbox Code Playgroud)

标签被添加到数据库中,标签与产品的关联工作正常。(即当我做Product.objects.filter(tags__name__in=["a_new_tag"]相应的产品时吐出来)

我需要做的是在处理表单时在管理中添加一些标签。

这是我的表单代码(阅读第 4 行和第 5 行中的注释):

class ProductForm(ModelForm):
        def save(self, commit=True):
            product = super(ProductForm, self).save(commit=False)
            product.type="New Type to Confirm Info is being Saved Correctly" //this is saved to the product.
            product.tags.add('a_new_tag_1') //the tag is saved to the taggit db, but the association with the product isn't kept.
            product.save()
            self.save_m2m()
            return m
Run Code Online (Sandbox Code Playgroud)

我尝试在管理类中进行保存,但这也不起作用:

class ProductAdmin(admin.ModelAdmin):
    form = ProductForm
    def save_model(self, request, obj, form, change):
        obj.type="new_type" //this works 
        obj.tags.add("a_new_tag_2") //tag association not saved
        obj.save()
        form.save_m2m()
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?提前致谢!

forms django admin django-taggit

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

将排除与 Django 字段集一起使用

我正在尝试为模型编写一个动态表单,允许具有不同权限的用户做不同的事情。我希望下面的代码能够正常运行,以便非超级用户无法编辑“商家”块中的任何字段。

class CategoryModelAdmin(LWModelAdmin):
    fieldsets = (
        ('Merchant', {'fields': ('merchant',) }),
        ('Category', { 'fields': ('name', 'parent',) }),
    )
    def get_form(self,request,obj=None, **kwargs): 
        if request.user.is_superuser:
            self.exclude = []
        else:
            self.exclude = ['Merchant']
        return super(CategoryModelAdmin,self).get_form(request, obj=None, **kwargs)
Run Code Online (Sandbox Code Playgroud)

虽然我可以通过下面的代码实现这种效果,但我真的在寻找“正确”的方法来做到这一点,感觉使用 exclude 是可行的方法,但无论如何我似乎都无法做到我试试。

class CategoryModelAdmin(LWModelAdmin):
    declared_fieldsets = None
    admin_fieldsets = (
        (None, {'fields': ('merchant',) }),
        ('Category', { 'fields': ('name', 'parent',) }),
    )
    restricted_fieldsets = (
        ('Category', { 'fields': ('name', 'parent',) }),
    )

    def get_fieldsets(self, request, obj=None):
        if request.user.is_superuser:
            fieldsets = self.admin_fieldsets
        else:
            fieldsets = self.restricted_fieldsets
        return LWModelAdmin.fieldsets …
Run Code Online (Sandbox Code Playgroud)

django admin fieldset

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

Magento - 如何提交具有批量操作或类似功能的可编辑网格

我在 magento 中使用网格来显示表格的内容。该表有一个位置列,我正在根据其中的值对内容进行排序。
此位置列在网格中显示为类型输入:

    $this->addColumn('position', array(
        'header'    => Mage::helper('postcard')->__('Position'),
        'align'     =>'left',
        'index'     => 'position',
        'type'      => 'input',
        'width'     =>  '100',
        'sortable'  => true,
    ));
Run Code Online (Sandbox Code Playgroud)

如何为所有行提交这些列的值?我尝试使用批量操作,但只提交所选行的 ID 而不是位置列。有没有其他方法可以做到这一点?

grid admin input magento magento-1.9

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

我可以使用 phpMyAdmin 或 MySQL 来检查记录何时创建或修改而没有时间戳列吗?

设想。

具有地址列表的简单数据库

addressID
FirstName
LastName
City
PostCode
CountyID
ZoneID
Run Code Online (Sandbox Code Playgroud)

问题是默认情况下,该表最后没有创建或时间戳列。但是,我可以通过我的 Nginx SSH Ubuntu 11 设置完全访问 MySQL - 我也可以登录到 root phpMyAdmin。

例如,我可以检查特定条目的制作时间、修改时间等吗?

mysql admin phpmyadmin

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

Glassfish 3.1.2.2:管理控制台无法加载

当我尝试使用以下命令访问管理控制台时

http://localhost:4848
Run Code Online (Sandbox Code Playgroud)

它说管理控制台正在加载,但不会再继续。如果我按照建议刷新页面,我会收到 HTTP 404。

Stack Overflow 上还有其他几个已回答的类似问题,但没有一个答案有帮助。因此,我将全局日志记录级别设置为 FINEST 并查看了 server.log。

我得到的第一个也是最突出的例外是:

[#|2013-05-07T11:04:52.187+0200|FINE|glassfish3.1.2|com.sun.enterprise.v3.admin.adapter.AdminConsoleAdapter|_ThreadID=81;_ThreadName=Thread-2;ClassName=com.sun.enterprise.v3.admin.adapter.AdminConsoleAdapter;MethodName=initRest;|java.io.IOException: Server returned HTTP response code: 401 for URL: http://0.0.0.0:4848/management/domain
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1625)
at com.sun.enterprise.v3.admin.adapter.AdminConsoleAdapter.initRest(AdminConsoleAdapter.java:557)
at com.sun.enterprise.v3.admin.adapter.AdminConsoleAdapter$1.run(AdminConsoleAdapter.java:372)
Run Code Online (Sandbox Code Playgroud)

这里是从启动 glassfish 到访问管理控制台的完整日志

这发生在我的开发机器(Windows XP)上。尝试了几次重新安装到不同的位置。我的 JVM 来自 JDK 7u21。

在我的其他具有类似配置的开发机器(Ubuntu 13.04)上不会发生这种情况。除了操作系统之外,主要区别在于代理配置。它被设置为所有协议的代理,端口 8080,除了 localhost 之外。

我自己实在是没有答案……

编辑

其他奇怪的行为。有时(glassfish 每隔一秒重新启动一次)可以通过以下方式访问登录管理控制台

http://127.0.0.1:4848/j_security_check
Run Code Online (Sandbox Code Playgroud)

然后我可以登录并编辑其中的任何设置。当我注销时,我收到 HTTP 500:

javax.servlet.ServletException: java.lang.reflect.InvocationTargetException while attempting to process a 'beforeCreate' event for 'sun_html53'.

root cause

java.lang.RuntimeException: java.lang.reflect.InvocationTargetException while attempting to process a 'beforeCreate' event for 'sun_html53'.

root cause

java.lang.reflect.InvocationTargetException

root …
Run Code Online (Sandbox Code Playgroud)

admin glassfish application-server jakarta-ee

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

django“admin.site.register(...)”仅适用于超级用户

我想在管理后端仅向超级用户显示模型,而不向员工用户显示模型,这可能吗?

例子:

check which user is logged
if superuser

admin.site.register(model_1)
admin.site.register(model_2)
admin.site.register(model_3)
...

if staff_user

admin.site.register(model_1)   #show only one model in the admin
Run Code Online (Sandbox Code Playgroud)

谢谢

django admin backend root

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

在 Django 中取消注册第三方 ModelAdmin 会导致 NotRegistered 错误

我想在管理站点中完全隐藏来自第三方模块 ( otherapp) 的模型。

admin.site.unregister(ModelToHide)输入了我的一个应用程序的管理员 ( myapp),但它会导致NotRegistered每个页面上出现错误。问题是之前myapp.admin加载的。 otherapp.admin

我尝试更改顺序INSTALLED_APPS,使其otherapp出现在之前myapp,但没有帮助,Django 以相反的顺序加载它们。我在其中一篇评论中读到,根据 Django 的书,顺序INSTALLED_APPS并不重要。

实际上,我创建这个问题只是为了分享我让它为我工作的方式,因为我花了一些时间来找出解决方案。希望这对某人有帮助。

python django admin

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

为 django-import-export 注册多个管理类

我希望模型有不同的导出格式,因此其中一种格式包含其他格式中不存在的附加元数据。

我可以为这两种导出格式创建一个 ModelResource 子类,但我想允许用户从管理界面中选择它们。

它是这样的:

class IngredientColourRelation(models.Model):
    ingredient = models.CharField()
    colour_label = models.CharField()
    metadata = models.CharField()

class IngredientColourLabelResource(resources.ModelResource):
    """Ingredient Resource class for importing and exporting."""

    ingredient = resources.Field()
    colour_label = resources.Field()

    class Meta:
        """Meta class"""
        model = IngredientColourRelation

        fields = ('id', 'ingredient', 'colour_label',)
        export_order = ('id', 'ingredient', 'colour_label',)
Run Code Online (Sandbox Code Playgroud)

另一个资源是这样的:

class MetadataIngredientColourLabelResource(resources.ModelResource):
    """Ingredient Resource class for importing and exporting."""

    ingredient = resources.Field()
    colour_label = resources.Field()
    metadata = resources.Field()

    class Meta:
        """Meta class"""
        model = IngredientColourRelation

        fields = ('id', 'ingredient', 'colour_label', 'metadata',) …
Run Code Online (Sandbox Code Playgroud)

python django admin django-import-export

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