相关疑难解决方法(0)

在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万
查看次数

RemovedInDjango18Warning:不建议使用'fields'属性或'exclude'属性创建ModelForm

我正在做一个Django项目,当我尝试访问127.0.0.1:8000/articles/create时,我的Ubuntu终端出现以下错误:

/home/(my name)/django_test/article/forms.py:4: RemovedInDjango18Warning:  Creating a ModelForm without either the 'fields' attribute or the 'exclude' attribute is deprecated - form ArticleForm needs updating
class ArticleForm(forms.ModelForm):
Run Code Online (Sandbox Code Playgroud)

另外,访问我的实际localhost站点时,我也遇到以下错误:

ValueError at /articles/create/

The view article.views.create didn't return an HttpResponse object. It returned None instead.
Run Code Online (Sandbox Code Playgroud)

这是我的forms.py文件:

from django import forms
from models import Article

class ArticleForm(forms.ModelForm):

    class Meta:
        model = Article 
Run Code Online (Sandbox Code Playgroud)

这是我的views.py文件:

from django.shortcuts import render_to_response
from article.models import Article
from django.http import HttpResponse
from forms import ArticleForm
from django.http import HttpResponseRedirect
from django.core.context_processors …
Run Code Online (Sandbox Code Playgroud)

python django

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

Django Admin - 覆盖自定义表单字段的小部件

我有一个自定义TagField表单字段.

class TagField(forms.CharField):
    def __init__(self, *args, **kwargs):
        super(TagField, self).__init__(*args, **kwargs)
        self.widget = forms.TextInput(attrs={'class':'tag_field'})
Run Code Online (Sandbox Code Playgroud)

如上所示,它使用TextInput表单字段小部件.但在管理员中我希望它使用Textarea小部件显示.为此,有formfield_overrides钩子,但它不适用于这种情况.

管理声明是:

class ProductAdmin(admin.ModelAdmin):
    ...
    formfield_overrides = {
        TagField: {'widget': admin.widgets.AdminTextareaWidget},
    }
Run Code Online (Sandbox Code Playgroud)

这对表单字段小部件没有影响,tags仍然使用TextInput小部件进行呈现.

任何帮助深表感谢.

-
omat

django overriding widget django-admin

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

如何使Django admin只读textarea字段

在Django admin中,如果我有一个Model字段,TextField并使用将该字段设置为readonly readonly_fields,那么它将在<p>标签中显示为文本。

我希望它仍显示为一个textarea字段,但要disabled设置其属性。

最简单的方法是什么?

django django-admin

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

Django 管理 CheckboxSelectMultiple 小部件不适用于 ManyToManyField

我使用下面的模型,其中默认的 django 用户表与 Hotel 具有多对多关系。

在 django 管理面板中将多个用户分配给酒店很困难,我想将默认的“ctrl-click”方法替换为复选框,在该复选框中我可以选择多个用户而无需按住 ctrl。

模型:

from django.db import models
from django.contrib.auth.models import User

class Hotel(models.Model):
    # associate the user
    user = models.ManyToManyField(User)
    # additional fields
    hotel_name = models.CharField(max_length=100)
    hotel_id = models.CharField(max_length=100)

    def __str__(self):
        return self.hotel_id
Run Code Online (Sandbox Code Playgroud)

管理员.py

from django.contrib import admin
from .models import *
from django.forms import CheckboxSelectMultiple


# Checkbox for many-to-many fields
class HotelAdmin(admin.ModelAdmin):
    formfield_overrides = {
        models.ManyToManyField: {'widget': CheckboxSelectMultiple},
    }

admin.site.register(Hotel)
Run Code Online (Sandbox Code Playgroud)

结果:formfield_override不起作用,选择用户入住酒店不是一个复选框 在此输入图像描述

python django many-to-many django-admin django-widget

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