我有一个django管理界面,在模型列表中我想要一个自定义列,它将是一个使用其中一个字段值的超链接.基本上,模型的一个字段是一个url,我希望该列在可点击的超链接中包含该URL.此链接需要在其前面添加其他URL作为模型字段中的相对路径.
很长一段时间我都有这个错误,但无法弄清楚:
渲染时捕获TypeError:强制转换为Unicode:需要字符串或缓冲区,找到NoneType
当我尝试在我的一个模型上添加或修改时,它发生在管理员中(显示工作正常)
这是模型:
class PS(models.Model):
id_ps = models.IntegerField(null=True)
client = models.ForeignKey(Client, null=True, blank=True)
nom_du_site = models.CharField(max_length=250)
rue_livraison = models.TextField(null=True)
complement_adresse = models.TextField(null=True)
code_postal_livraison = models.CharField(max_length=50, null=True)
ville_livraison = models.CharField(max_length=200, null=True)
pays_livraison = models.CharField(max_length=200, null=True)
distributeur = models.CharField(max_length=50, null=True)
tarif = models.CharField(max_length=250, null=True)
type_tarif = models.CharField(max_length=50, null=True)
type_installation = models.CharField(max_length=50, null=True)
def __unicode__(self):
return self.nom_du_site
@property
def pce(self):
try:
return PCE.objects.filter(ps=self)[0]
except IndexError:
return
#
def get_pce(self):
from pce.models import PCE
return PCE.objects.filter(ps=self).exclude(frequence='6M')
#
def get_pce_6m(self):
from pce.models import PCE …Run Code Online (Sandbox Code Playgroud) 我有一个django应用程序,它有两个这样的模型:
class MyModel(models.Model):
name = models.CharField()
country = models.ForeignKey('Country')
class Country(models.Model):
code2 = models.CharField(max_length=2, primary_key=True)
name = models.CharField()
Run Code Online (Sandbox Code Playgroud)
管理类MyModel看起来像这样:
class MyModelAdmin(admin.ModelAdmin):
list_display = ('name', 'country',)
list_filter = ('country',)
admin.site.register(models.MyModel, MyModelAdmin)
Run Code Online (Sandbox Code Playgroud)
该Country表包含约250个国家.某些MyModel实例实际上只引用了少数几个国家.
问题是django admin 中的列表过滤器列出了过滤器面板中的所有国家/地区.列出所有国家(而不仅仅是那些被实例引用的国家)在这种情况下几乎无法实现列表过滤器的目的.
是否有一些只显示MyModel列表过滤器中作为选项引用的国家/地区?(我使用Django 1.3.)
我正在通过标准的Django教程为应用程序创建管理员.在设置中评论管理相关的东西并运行syncdb后,我收到此消息:
DoesNotExist at /admin/ Site matching query does not exist.
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮我解决这个问题吗?
class Book(models.Model):
title = models.CharField(..., null=True)
type = models.CharField(...)
author = models.CharField(...)
Run Code Online (Sandbox Code Playgroud)
我在models.py中有一个简单的类.在管理员中,我希望在保存的书的类型为1时隐藏书的标题(在书的详细信息表格中).如何以最简单的方式进行?
虽然我可以在list_display中显示上传的图像,但是可以在每个模型页面上执行此操作(如更改模型所获得的页面)?
快速样本模型将是:
Class Model1(models.Model):
image = models.ImageField(upload_to=directory)
Run Code Online (Sandbox Code Playgroud)
默认管理员显示上传图像的网址,但不显示图片本身.
谢谢!
我已经为我自己的基金停止了几个django应用程序和东西,到目前为止一切都运行良好.
现在我刚刚创建了新项目(django 1.2.1)并且从第一时刻就遇到了麻烦.
我创建了新的应用程序 - 游戏和新模型游戏.我创建了admin.py并将相关内容放入其中.跑到syncdb然后去检查管理员.模型没有出现在那里.
我继续检查并重新检查并阅读以前类似的线程:已 注册的模型未显示在管理员 Django App中未显示在管理界面中
但就我所知,他们也不帮助我.也许其他人可以为我指出这一点.
游戏应用中的models.py:
# -*- coding: utf-8 -*-
from django.db import models
class Game(models.Model):
type = models.IntegerField(blank=False, null=False, default=1)
teamone = models.CharField(max_length=100, blank=False, null=False)
teamtwo = models.CharField(max_length=100, blank=False, null=False)
gametime = models.DateTimeField(blank=False, null=False)
Run Code Online (Sandbox Code Playgroud)
游戏应用中的admin.py:
# -*- coding: utf-8 -*-
from jalka.game.models import Game
from django.contrib import admin
class GameAdmin(admin.ModelAdmin):
list_display = ['type', 'teamone', 'teamtwo', 'gametime']
admin.site.register(Game, GameAdmin)
Run Code Online (Sandbox Code Playgroud)
project settings.py:
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
)
ROOT_URLCONF = 'jalka.urls' …Run Code Online (Sandbox Code Playgroud) 我有一个标准的多对一关系设置.有很多字段,但就我们的目的而言,相关模型是:
class Class(models.Model):
name = models.CharField(max_length=128)
class Student(models.Model):
class = models.ForeignKey(Class)
name = models.CharField(max_length=128)
address = models.CharField(max_length=128)
# ...etc
Run Code Online (Sandbox Code Playgroud)
我创建了一个管理员,它运行得很好.在我编辑学生时,它甚至可以自动设置班级.但是,当我去创建/编辑一个类时,我得到的只是名称的输入框.
有没有办法添加一个框/字段,可以从Class管理页面添加学生作为Class的成员?我可以在线创建一个表单,但那就是创建新的学生.我已经创建了所有学生,我只是在寻找一种快速方法,将多个现有学生添加到不同的班级.
我想为django admin而不是普通的'is_staff'和'is_superuser'制作自定义过滤器.我在Django docs中读过这个list_filter.自定义过滤器以这种方式工作:
from datetime import date
from django.utils.translation import ugettext_lazy as _
from django.contrib.admin import SimpleListFilter
class DecadeBornListFilter(SimpleListFilter):
# Human-readable title which will be displayed in the
# right admin sidebar just above the filter options.
title = _('decade born')
# Parameter for the filter that will be used in the URL query.
parameter_name = 'decade'
def lookups(self, request, model_admin):
"""
Returns a list of tuples. The first element in each
tuple is the coded value for …Run Code Online (Sandbox Code Playgroud) 我有一组看起来像这样的模型:
class Page(models.Model):
title = models.CharField(max_length=255)
class LinkSection(models.Model):
page = models.ForeignKey(Page)
title = models.CharField(max_length=255)
class Link(models.Model):
linksection = models.ForeignKey(LinkSection)
text = models.CharField(max_length=255)
url = models.URLField()
Run Code Online (Sandbox Code Playgroud)
和一个看起来像这样的admin.py:
class LinkInline(admin.TabularInline):
model = Link
class LinkSectionInline(admin.TabularInline):
model = LinkSection
inlines = [ LinkInline, ]
class PageAdmin(admin.ModelAdmin):
inlines = [ LinkSectionInline, ]
Run Code Online (Sandbox Code Playgroud)
我的目标是获得一个管理界面,让我可以在一个页面上编辑所有内容.这个模型结构的最终结果是生成的东西生成一个看起来或多或少的视图+模板:
<h1>{{page.title}}</h1>
{% for ls in page.linksection_set.objects.all %}
<div>
<h2>{{ls.title}}</h2>
<ul>
{% for l in ls.link_set.objects.all %}
<li><a href="{{l.url}}">{{l.title}}</a></li>
{% endfor %}
</ul>
</div>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
据我所知,我知道Django管理员中的inline-in-an-inline技巧失败了.有谁知道允许这种三级模型编辑的方法?提前致谢.