当前位置: 首页 > 面试题库 >

Django Admin:引用用户的ForeignKey和ManyToManyField关系的顺序

楮法
2023-03-14
问题内容

我有一个利用DjangoUserProfile扩展内置DjangoUser模型的应用程序。看起来有点像:

class UserProfile(models.Model):
    user = models.ForeignKey(User, unique=True)
    # Local Stuff
    image_url_s = models.CharField(max_length=128, blank=True)
    image_url_m = models.CharField(max_length=128, blank=True)

    # Admin
    class Admin: pass

我在模型中添加了一个新类:

class Team(models.Model):
    name = models.CharField(max_length=128)
    manager = models.ForeignKey(User, related_name='manager')
    members = models.ManyToManyField(User, blank=True)

并注册到管理员:

class TeamAdmin(admin.ModelAdmin):
    list_display = ('name', 'manager')

admin.site.register(Team, TeamAdmin)

las,在管理界面中,当我从下拉框中选择经理时,或通过多选字段设置团队成员时,它们将按用户数字ID进行排序。对于我的一生,我不知道该如何进行排序。

我有一个类似的课程:

class Meta:
    ordering = ['name']

效果很好!但是我不“拥有”该User课程,当我尝试使用以下技巧时UserAdmin

class Meta:
    ordering = ['username']

我得到:

django.core.management.base.CommandError: One or more models did not validate: events.userprofile: "ordering" refers to "username", a field that doesn't exist.

user.username也不起作用。我可以指定,例如image_url_s是否想要。。。如何告诉管理员对用户列表进行排序username?谢谢!


问题答案:

一种方法是在管理中定义一个用于您的Team模型的自定义表单,并覆盖该manager字段以使用具有正确顺序的queryset:

from django import forms

class TeamForm(forms.ModelForm):
    manager = forms.ModelChoiceField(queryset=User.objects.order_by('username'))

    class Meta:
        model = Team

class TeamAdmin(admin.ModelAdmin):
    list_display = ('name', 'manager')
    form = TeamForm


 类似资料:
  • 问题内容: 我正在与Django建立一个个人项目来训练自己(因为我爱Django,但我错过了技能)。我有基本的要求,我知道Python,即使没有三次,我也仔细阅读了Django的书两次。 我的目标是使用基于Django的Web界面创建一个简单的监视服务,使我可以检查“节点”(服务器)的状态。每个节点都有多个“服务”。该应用程序检查每个节点的每个服务的可用性。 我的问题是我不知道如何在数据库中表示不

  • 本文向大家介绍django ManyToManyField多对多关系的实例详解,包括了django ManyToManyField多对多关系的实例详解的使用技巧和注意事项,需要的朋友参考一下 Django 的 ORM 有多种关系:一对一,多对一,多对多 各自定义的方式为 : 一对一: OneToOneField 多对一: ForeignKey 多对多: ManyToManyField 上边的描述太

  • 问题内容: 我有一个用户模型和一个提交模型。每个提交都有一个上载用户的外键字段user_submitted。 我的问题很简单:如何获得提交量最多的三个用户的列表? 我尝试在用户模型上创建num_submissions方法: 然后执行: 但这失败了,就像我尝试过的所有其他尝试一样。我实际上可以使用智能数据库查询吗?还是我应该在视图文件中做些更怪异的事情? 问题答案: 你没有在示例模型代码中提及,但在

  • 使用Mac、Php版本7.1.19、最新版本的Laravel和SQLite数据库。该网站有3个模型。用户、评论和帖子。我想将评论连接到用户。这样人们就可以在仪表板上看到自己的评论。数据库应正确设置,注释表具有['id'、'user\u id'、'body'、'created\u at'、'updated\u at']。tinker错误告诉我它需要一个返回,但我为这两个函数都添加了一个返回。 你能详

  • 是否可以与用户建立多对多关系?我试图制作一个简单的实体 但是当我从列表中选择用户并选择Save时,它给出了错误 org.springframework.dao.InvalidDataAccessApiUsageExc的:org.hibernate.瞬态对象异常:对象引用未保存的瞬态实例-保存瞬态实例前冲洗:com.mycompany.myapp.domain.用户;嵌套异常java.lang.Il

  • 在Laravel中,我试图显示Auth::user(用户)和部门之间的关系元素。在用户表中,我有id、名称和部门id。在部门表中,我有id和名称。 在用户模型中,我创建 然后,在刀片模板中我尝试 Auth::user()- 但返回null,不显示链接的部门。Null不正确,所有用户都有部门。苏,有什么帮助吗?你们的关系有什么问题?