草庐IT

python - Django 管理员不会显示字段

coder 2023-10-24 原文

在我的实时网站上的 Django Admin 中,编辑某些模型的表单是空白的。应该有字段出现在黄色条下:

出于某种原因,这只影响两个模型(用户和作业),其他模型工作正常。在我的本地测试服务器上测试网站时,受影响模型上的字段也会出现。这是我的 admin.py:

from django.contrib import admin
from web.models import Address, User, WorkerProfile, EmployerProfile, Job, SupportIssue, LoginCode, ReferredEmail, InArea, AdminEmail
from django.contrib.auth.models import Group

class AddressAdmin(admin.ModelAdmin):
    search_fields = ('name', 'zip',)

class UserAdmin(admin.ModelAdmin):
    search_fields = ('email', 'phone', 'role', 'address__zip',)
    exclude = ('birthday', 'password', 'last_login',  'is_active',)

class WorkerProfileAdmin(admin.ModelAdmin):
    search_fields = ('user__email', 'user__phone', 'user__address__zip',)

class EmployerProfileAdmin(admin.ModelAdmin):
    search_fields = ('user__email', 'user__phone', 'user__address__zip',)

class JobAdmin(admin.ModelAdmin):
    search_fields = ('employer__user__email', 'employer__user__phone', 'worker__user__email', 'worker__user__phone', 'title', 'address__zip',)
    exclude = ('is_hired', 'is_completed', 'employer_is_reviewed',)

class SupportIssueAdmin(admin.ModelAdmin):
    search_fields = ('email',)

class LoginCodeAdmin(admin.ModelAdmin):
    search_fields = ('email',)

class ReferredEmailAdmin(admin.ModelAdmin):
    search_fields = ('email', 'user__email',)

class InAreaAdmin(admin.ModelAdmin):
    search_fields = ('email', 'state',)

class AdminEmailAdmin(admin.ModelAdmin):
    search_fields = ('filter_value', 'subject', 'date',)

admin.site.register(Address, AddressAdmin)
admin.site.register(User, UserAdmin)
admin.site.register(WorkerProfile, WorkerProfileAdmin)
admin.site.register(EmployerProfile, EmployerProfileAdmin)
admin.site.register(Job, JobAdmin)
admin.site.register(SupportIssue, SupportIssueAdmin)
admin.site.register(LoginCode, LoginCodeAdmin)
admin.site.register(ReferredEmail, ReferredEmailAdmin)
admin.site.register(InArea, InAreaAdmin)
admin.site.register(AdminEmail, AdminEmailAdmin)

admin.site.unregister(Group)

我已经使用以下命令在我的服务器上完成了迁移:

python manage.py makemigrations APPNAME
python manage.py migrate
python manage.py syncdb

我也重新启动了我的服务器,并且 admin.py 文件是最新的。我正在使用 django 1.8.5、apache 2.4 和 MySQL 有人知道问题的原因吗?有没有人以前遇到过这个问题或知道如何解决?

编辑(models.py):

class Address(models.Model):
    state_choices = (
        ('OH', 'Ohio'),
    )

    name = models.CharField(max_length=255, verbose_name='Name')
    street = models.CharField(max_length=255, verbose_name='Street Address')
    city = models.CharField(max_length=31, verbose_name='City')
    state = models.CharField(max_length=255, choices=state_choices, verbose_name='State')
    zip = models.CharField(validators=[MinLengthValidator(5)], max_length=5, verbose_name='Zip Code')

    def __str__ (self):
        return self.name + ' ' + self.street + ' ' + self.city + ' ' + self.state + ' ' + self.zip

class UserManager(BaseUserManager):
    def create_user(self, first_name, last_name, email, phone, role, birthday, address, password):
        user = self.model(first_name=first_name, last_name=last_name, email=email, phone=phone, role=role, birthday=birthday, address=address)
        user.set_password(password)
        user.admin_permission = False
        user.save()

        return user

    def create_superuser(self, first_name, last_name, email, phone, birthday, password, address=None):
        if not address:
            address = Address(street='', city='', state='')
            address.save()

        user = self.create_user(first_name=first_name, last_name=last_name, email=email, phone=phone, role='Worker', birthday=birthday, address=address, password=password)
        user.is_admin = True
        user.admin_permission = True
        user.save()

        return user

class User(AbstractBaseUser):
    role_choices = (
        ('Worker', 'Worker'),
        ('Employer', 'Employer'),
    )

    objects = UserManager()

    first_name = models.CharField(max_length=255, verbose_name='First Name')
    last_name = models.CharField(max_length=255, verbose_name='Last Name')
    email = models.EmailField(max_length=255, unique=True, verbose_name='Email Address')
    phone = models.CharField(validators=[MinLengthValidator(10)], max_length=10, unique=True, verbose_name='Phone Number')
    role = models.CharField(max_length=255, choices=role_choices, verbose_name='User Role')
    birthday = models.DateField(auto_now=False, null=True, verbose_name='Birthday')
    address = models.ForeignKey(Address, verbose_name='Address')
    admin_permission = models.BooleanField()
    is_active = models.BooleanField(default=True)
    is_admin = models.BooleanField(default=False)

    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = ['first_name', 'last_name', 'phone', 'birthday']

    def get_full_name(self):
        return self.first_name + ' ' + self.last_name

    def get_short_name(self):
        return self.first_name

    @property
    def is_superuser(self):
        return self.is_admin

    @property
    def is_staff(self):
        return self.is_admin

    def has_perm(self, perm, obj=None):
        return self.is_admin

    def has_module_perms(self, app_label):
        return self.is_admin

    def __str__ (self):
        return self.email   

class Job(models.Model):
    wage_type_choices = (
        ('Hourly', 'Hourly'),
        ('Total', 'Total'),
    )

    employer = models.ForeignKey(EmployerProfile, verbose_name='Employer')
    address = models.ForeignKey(Address, verbose_name='Address')
    title = models.CharField(max_length=255, verbose_name='Job Title')
    description = models.TextField(blank=False, verbose_name='Job Description')
    completion_date = models.DateField(auto_now=False, auto_now_add=False, verbose_name='Completion Date', help_text='mm/dd/yyyy')
    wage_type = models.CharField(max_length=255, choices=wage_type_choices, verbose_name='Wage Type')
    wage = models.DecimalField(validators=[MinValueValidator(9)], max_digits=6, decimal_places=2, verbose_name='Wage')
    tools = models.TextField(blank=True, default='', verbose_name='Tools')
    is_hired = models.BooleanField(default=False, verbose_name='Job Is Hired')
    is_completed = models.BooleanField(default=False, verbose_name='Job Is Completed')
    employer_is_reviewed = models.BooleanField(default=False, verbose_name='Employer Is Reviewed')
    worker = models.ForeignKey(WorkerProfile, null=True, verbose_name='Worker')

    def __str__ (self):
        return self.title

我还包含了地址模型,因为两个受影响的模型都有一个指向地址的外键。

最佳答案

我将 Debug 设置为 True,但出现了 UnicodeError。问题是一些外国用户注册后,在他们的地址中使用了非英文字符。当用户模型访问这些地址时,管理员抛出了 UnicodeError。解决方案是从用户输入外来字符的任何表中删除任何行,并验证用户将来只在表单中输入允许的字符。

关于python - Django 管理员不会显示字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35829834/

有关python - Django 管理员不会显示字段的更多相关文章

  1. ruby - i18n Assets 管理/翻译 UI - 2

    我正在使用i18n从头开始​​构建一个多语言网络应用程序,虽然我自己可以处理一大堆yml文件,但我说的语言(非常)有限,最终我想寻求外部帮助帮助。我想知道这里是否有人在使用UI插件/gem(与django上的django-rosetta不同)来处理多个翻译器,其中一些翻译器不愿意或无法处理存储库中的100多个文件,处理语言数据。谢谢&问候,安德拉斯(如果您已经在ruby​​onrails-talk上遇到了这个问题,我们深表歉意) 最佳答案 有一个rails3branchofthetolkgem在github上。您可以通过在Gemfi

  2. python - 如何使用 Ruby 或 Python 创建一系列高音调和低音调的蜂鸣声? - 2

    关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。

  3. ruby-on-rails - Rails 编辑表单不显示嵌套项 - 2

    我得到了一个包含嵌套链接的表单。编辑时链接字段为空的问题。这是我的表格:Editingkategori{:action=>'update',:id=>@konkurrancer.id})do|f|%>'Trackingurl',:style=>'width:500;'%>'Editkonkurrence'%>|我的konkurrencer模型:has_one:link我的链接模型:classLink我的konkurrancer编辑操作:defedit@konkurrancer=Konkurrancer.find(params[:id])@konkurrancer.link_attrib

  4. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  5. ruby - Highline 询问方法不会使用同一行 - 2

    设置:狂欢ruby1.9.2高线(1.6.13)描述:我已经相当习惯在其他一些项目中使用highline,但已经有几个月没有使用它了。现在,在Ruby1.9.2上全新安装时,它似乎不允许在同一行回答提示。所以以前我会看到类似的东西:require"highline/import"ask"Whatisyourfavoritecolor?"并得到:Whatisyourfavoritecolor?|现在我看到类似的东西:Whatisyourfavoritecolor?|竖线(|)符号是我的终端光标。知道为什么会发生这种变化吗? 最佳答案

  6. ruby-on-rails - 如何验证非模型(甚至非对象)字段 - 2

    我有一个表单,其中有很多字段取自数组(而不是模型或对象)。我如何验证这些字段的存在?solve_problem_pathdo|f|%>... 最佳答案 创建一个简单的类来包装请求参数并使用ActiveModel::Validations。#definedsomewhere,atthesimplest:require'ostruct'classSolvetrue#youcouldevencheckthesolutionwithavalidatorvalidatedoerrors.add(:base,"WRONG!!!")unlesss

  7. ruby-on-rails - form_for 中不在模型中的自定义字段 - 2

    我想向我的Controller传递一个参数,它是一个简单的复选框,但我不知道如何在模型的form_for中引入它,这是我的观点:{:id=>'go_finance'}do|f|%>Transferirde:para:Entrada:"input",:placeholder=>"Quantofoiganho?"%>Saída:"output",:placeholder=>"Quantofoigasto?"%>Nota:我想做一个额外的复选框,但我该怎么做,模型中没有一个对象,而是一个要检查的对象,以便在Controller中创建一个ifelse,如果没有检查,请帮助我,非常感谢,谢谢

  8. ruby-on-rails - 项目升级后 Pow 不会更改 ruby​​ 版本 - 2

    我在我的Rails项目中使用Pow和powifygem。现在我尝试升级我的ruby​​版本(从1.9.3到2.0.0,我使用RVM)当我切换ruby​​版本、安装所有gem依赖项时,我通过运行railss并访问localhost:3000确保该应用程序正常运行以前,我通过使用pow访问http://my_app.dev来浏览我的应用程序。升级后,由于错误Bundler::RubyVersionMismatch:YourRubyversionis1.9.3,butyourGemfilespecified2.0.0,此url不起作用我尝试过的:重新创建pow应用程序重启pow服务器更新战俘

  9. ruby-on-rails - 使用 Sublime Text 3 突出显示 HTML 背景语法中的 ERB? - 2

    所以我在关注Railscast,我注意到在html.erb文件中,ruby代码有一个微弱的背景高亮效果,以区别于其他代码HTML文档。我知道Ryan使用TextMate。我正在使用SublimeText3。我怎样才能达到同样的效果?谢谢! 最佳答案 为SublimeText安装ERB包。假设您安装了SublimeText包管理器*,只需点击cmd+shift+P即可获得命令菜单,然后键入installpackage并选择PackageControl:InstallPackage获取包管理器菜单。在该菜单中,键入ERB并在看到包时选择

  10. ruby-on-rails - link_to 不显示任何 rails - 2

    我试图在索引页中创建一个超链接,但它没有显示,也没有给出任何错误。这是我的index.html.erb代码。ListingarticlesTitleTextssss我检查了我的路线,我认为它们也没有问题。PrefixVerbURIPatternController#Actionwelcome_indexGET/welcome/index(.:format)welcome#indexarticlesGET/articles(.:format)articles#indexPOST/articles(.:format)articles#createnew_articleGET/article

随机推荐