gpt4 book ai didi

python - django admin 中的外键字段

转载 作者:太空宇宙 更新时间:2023-11-04 05:23:58 25 4
gpt4 key购买 nike

用户模型中大约有 15 万个条目。因此,当我在没有 raw_id_fields 的 django-admin 中使用它时,在将所有条目加载为外键选择菜单时会导致问题。是否有其他方法可以轻松加载或可以搜索。

基本上我有上面定义的这些模型,并且有一个用户模型在 ProfileRecommendation 模型中用作 ForeignKey。因此用户模型的数据库条目包含大约 1,50,000 个条目。我不想要这些外国字段的默认选择选项。相反,如果可以将它们过滤掉并仅加载用户表的少数条目。或者无论如何我可以让它们像自动完成建议一样可搜索

管理员.py

class ProfileRecommendationAdmin(admin.ModelAdmin):
list_display = ('user', 'recommended_by', 'recommended_text')
raw_id_fields = ("user", 'recommended_by')
search_fields = ['user__username', 'recommended_by__username', ]
admin.site.register(ProfileRecommendation, ProfileRecommendationAdmin)

模型.py

class ProfileRecommendation(models.Model):
user = models.ForeignKey(User, related_name='recommendations')
recommended_by = models.ForeignKey(User, related_name='recommended')
recommended_on = models.DateTimeField(auto_now_add=True, null=True)
recommended_text = models.TextField(default='')

最佳答案

我建议您使用 django-select2-forms

使用该包,您可以如下定义模型的外部字段:

from select2.fields import ForeignKey

class Author(models.Model):
name = models.CharField(max_length=100)
active = models.BooleanField()

class Entry(models.Model):
author = ForeignKey(Author,
limit_choices_to=models.Q(active=True),
ajax=True,
search_field='name',
overlay="Choose an author...",
js_options={
'quiet_millis': 200,
},
on_delete=models.CASCADE)

在 django admin 中,这将使用 ajax 加载作者的姓名,这应该比使用默认的 admin ForeignKey 字段工作得更快。您还可以从示例中看到,您可以使用 limit_choices_to 来过滤仅供选择的所需值。

如果不是 django-select2-forms,您可以使用任何其他可用于 django 自动完成的包:list of autocomplete packages here

我尝试了列表中的几个,但 django-select2-forms 看起来对我来说是最好的。

关于python - django admin 中的外键字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39441421/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com