相关疑难解决方法(0)

如何在 Django 中使用 Field.disabled

我希望将 slug 输入字段设置为只读,但似乎无法正确利用“Field.disabled”。我怎样才能在一个简单的 Django 表单中做到这一点?

这是我的模型

class Article(models.Model):
    title = models.CharField(max_length=100)
    slug = models.SlugField()
    body = models.TextField()
    thumb = models.ImageField(default='default.png', blank=True)
Run Code Online (Sandbox Code Playgroud)

这是我的forms.py

class CreateArticle(forms.ModelForm):
    class Meta:
        model = models.Article
        fields = ['title', 'body', 'slug', 'thumb']
Run Code Online (Sandbox Code Playgroud)

forms django django-models python-3.x

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

django模板中的只读表单

如何在模板上进行只读输入,而不是在模型或视图中?

例如在

{% for form in formset %}
            {{ form.id }}
            <tr>
                <th>{{ form.project_name }}</th>
Run Code Online (Sandbox Code Playgroud)

{{ form.project_name }}如果可能的话,我需要通过html 进行readonly(仍然是form)(它在model.py中有一个默认值)

编辑.我需要它只是浏览器只读,而不是只读表单.

django

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

Django - 验证 modelform_factory 中的禁用字段

我使用 modelform_factory 生成带有额外表单的模型表单。对于带有实例的表单,类型字段被禁用,对于额外的表单,该字段被启用。

在 save() 时,表单不会验证,因为禁用字段的 POST 中没有数据。即使自定义清洁方法也不起作用(请参阅此答案)。我想跳过对禁用字段的验证,或者有办法保留该字段的实例数据。

模型.py

class Attribute(models.Model):
    shapefile = models.ForeignKey(Shapefile)
    name = models.CharField(max_length=255)
    type = models.IntegerField()
    width = models.IntegerField()
    precision = models.IntegerField()

    def __unicode__(self):
        return self.name
Run Code Online (Sandbox Code Playgroud)

表格.py

FIELD_TYPE = [('', '--Choose a type--'),
                    (0, 'Integer'),
                    (1, 'Integer list'),
                    (2, 'Double Precision Float'),
                    (3, 'List of doubles'),
                    (4, 'String of ASCII chars'),
                    (5, 'Array of strings'),
                    (8, 'Raw Binary data'),
                    (9, 'Date'),
                    (10, 'Time'),
                    (11, 'Date and Time')]

class AttributeForm(ModelForm):
    def __init__(self, *args, **kwargs):
        super(AttributeForm, …
Run Code Online (Sandbox Code Playgroud)

django django-forms

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

Django admin:将必填字段设为只读

我有许多与模型具有ForeignKey关系的Person模型.例如:

class PersonData(BaseModel):
    person = models.ForeignKey(Person)
    data = models.TextField()
Run Code Online (Sandbox Code Playgroud)

我想锁定管理员,这样一旦PersonData创建了一个对象,管理员用户就可以更改数据,但无法更改Person.

起初它看起来很简单 - 我把它放在PersonDataAdmin课堂上:

def get_readonly_fields(self, request, obj=None):
    if obj:
        return self.readonly_fields + ('person',)
    return self.readonly_fields
Run Code Online (Sandbox Code Playgroud)

在显示方面,这是按预期工作 - 我看到的值person,但它是灰色的所以我无法改变它 - 但是当我尝试更改数据并提交表单时,我收到一条错误消息, "请更正以下错误." 没有其他消息出现,但通过一些挖掘,我发现表单缺少必填person字段的值.

我已经研究了一个解决方案,它将涉及创建一个自定义表单,可以选择性地禁用这个字段(类似这个这个),但是(a)我没有成功地使它工作,并且(b)它似乎是一个对于看起来更简单的情况的大量代码.我也考虑过使用exclude,但遇到了同样的问题read_only.

有关如何实现这一目标的任何想法?谢谢!

django django-admin

0
推荐指数
2
解决办法
1592
查看次数