首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Manytomany字段自定义显示对象在Django

Manytomany字段自定义显示对象在Django
EN

Stack Overflow用户
提问于 2021-08-23 06:26:11
回答 3查看 178关注 0票数 2

我正在开发一个网站,我可以手动添加摄影师到Django管理面板,然后上传他们拍摄的图片。

我在Django中使用了默认的用户系统,并在这里添加了一个字段,显示这个用户是否是摄影师:

代码语言:javascript
复制
from django.contrib.auth.models import AbstractUser

# Create your models here.
class User(AbstractUser):
    is_photographer = models.BooleanField(default=True)

另外,在我需要放置图片的模型中,我使用ManyToMany字段来拍摄摄影师(因为这些照片可能是由几个人拍摄的):

代码语言:javascript
复制
from registration import User

class Photo(models.Model):
    ...
    photographers = models.ManyToManyField(User)

问题是,当向管理面板添加新图像时,不是摄影师的用户和is_photographer也会显示在摄影师中。我希望只显示是摄影师的用户,而不是普通用户。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-08-23 06:37:42

您可以使用Django 。Django为不同类型的字段放置了这些表单字段。要在ManyToMany关系中使用model字段,可以在模型admin_class中使用多细胞瘤

尝试将此函数放入照片模型所在的应用程序的admin.py文件中的Photo模型管理类中,如果您没有类管理,请创建如下所示:

代码语言:javascript
复制
from .models import Photo
from django.contrib import admin
from registration.models import User


class PhotoAdmin(admin.ModelAdmin):
    def formfield_for_manytomany(self, db_field, request, **kwargs):
        kwargs["queryset"] = User.objects.filter(is_photographer=True)
        return super(PhotoAdmin, self).formfield_for_manytomany(db_field, request, **kwargs)

admin.site.register(Photo, PhotoAdmin)
票数 2
EN

Stack Overflow用户

发布于 2021-08-23 06:37:13

在您的admin.py文件中执行以下操作:

代码语言:javascript
复制
class PhotoAdmin(admin.ModelAdmin):
    def formfield_for_manytomany(self, db_field, request, **kwargs):
        kwargs['queryset'] = Users.objects.filter(is_photographer=True)
        return super().formfield_for_manytomany(db_field, request, **kwargs)

admin.site.register(Photo, PhotoAdmin)
票数 2
EN

Stack Overflow用户

发布于 2021-08-23 06:37:39

您可以使用[Django-doc]

代码语言:javascript
复制
from django.conf import settings

class Photo(models.Model):
    # …
    photographers = models.ManyToManyField(
        setting.AUTH_USER_MODEL,
        limit_choices_to={'is_photographer': True}
    )

注意事项:通常使用[Django-doc]引用用户模型要比直接使用模型[Django-doc]更好。有关更多信息,您可以看到文件一节

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68888114

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档