我有一个对象的标准管理更改表单,带有用于ForeignKey关系的常用StackedInline表单.我希望能够将每个内联项目链接到其相应的全尺寸更改表单,因为内联项目有自己的内联项目,而我不能嵌套它们.

我try 了从自定义小部件到自定义模板的所有方法,但都不能正常工作.到目前为止,我所看到的片断形式的"解决方案"似乎不适用于内联.我正准备用jQuerytry 一些DOM破解,只是为了让它正常工作并继续前进.

我希望我一定错过了一些非常简单的东西,因为这似乎是一项非常简单的任务!

使用Django 1.2.

推荐答案

我也有类似的问题,我想出了定制小部件,并对模型表单进行了一些调整.以下是小部件:

from django.utils.safestring import  mark_safe    

class ModelLinkWidget(forms.Widget):
    def __init__(self, obj, attrs=None):
        self.object = obj
        super(ModelLinkWidget, self).__init__(attrs)

    def render(self, name, value, attrs=None):
        if self.object.pk:
            return mark_safe(
                u'<a target="_blank" href="../../../%s/%s/%s/">%s</a>' %\
                      (
                       self.object._meta.app_label,
                       self.object._meta.object_name.lower(),
                       self.object.pk, self.object
                       )
            )
        else:
            return mark_safe(u'')

现在,由于每个内联的小部件需要在构造函数中获得不同的对象,所以您不能仅以标准方式设置它,而是使用Form的init方法:

class TheForm(forms.ModelForm):
    ...
    # required=False is essential cause we don't
    # render input tag so there will be no value submitted.
    link = forms.CharField(label='link', required=False)

    def __init__(self, *args, **kwargs):
        super(TheForm, self).__init__(*args, **kwargs)
        # instance is always available, it just does or doesn't have pk.
        self.fields['link'].widget = ModelLinkWidget(self.instance)

Django相关问答推荐

升级到4.2时,获取默认文件存储/存储是互斥的

__init__()获取了意外的关键字参数';id';

如何根据状态计算表中数据的数量?

从一个组中获取所有用户 - Django

Django `UniqueConstraint` 异常处理方式与 'unique=True' 相同

未为部署的 django rest 框架加载静态文件

Django:如何在表单 clean() 方法的 django 验证错误中添加 超链接?

如何将表单中的用户字段设置为当前登录的用户?

如何在 Django ORM 中执行 GROUP BY ... COUNT 或 SUM?

如何在django中生成临时文件然后销毁

在 Django 中使用 AuthenticationForm

Django 模板和变量属性

get_or_create() 线程安全吗

django:TypeError:'tuple'对象不可调用

如何在不同的元素上添加注释?

如何在 django 中将多张图片上传到博客文章

Django/Python初学者:执行python manage.py syncdb时出错-找不到psycopg2

何时使用 Django get_absolute_url() 方法?

从 git 存储库中删除并忽略所有具有扩展名的文件

ValueError: 无法解析相关模型 u'app.model'