2016-09-14 2 views
0

ユーザモデルに150kのエントリがあります。 raw_id_fieldsなしでdjango-adminで使用している場合、すべてのエントリを外部キーの選択メニューとして読み込み中に問題が発生します。簡単に読み込むことができるように、または検索可能になるように別の方法がありますか?ForeignKeyのデフォルト選択を削除django adminのフィールド

私はこれらのモデルを上記のように定義しており、ProfileRecommendationモデルでForeignKeyとして使用されるUserモデルがあります。ユーザーモデルのデータベースエントリは、約150,000個のエントリで構成されています。私はこれらの外国のフィールドのためのデフォルトの選択オプションを望んでいません。代わりに、それらをフィルタリングして、ユーザテーブルのほんの少数のエントリをロードすることができます。オートコンプリートのように検索可能にする方法はありますか?

class ProfileRecommendationAdmin(admin.ModelAdmin): 


    def formfield_for_foreignkey(self, db_field, request, **kwargs): 
    if db_field.name == "user": 
     kwargs["queryset"] = User.objects.filter(is_superuser=True) 
    return super(ProfileRecommendationAdmin,self).formfield_for_foreignkey(db_field, request, **kwargs) 

または他の方法で上書きすることです:あなたはこのような何かが

formfield_for_foreignkeyメソッドを使用することができます

admin.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) 

models.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='') 
+0

[django adminのForeignKeyフィールド](https://stackoverflow.com/questions/39441421/foreignkey-field-in-django-admin)の可能な複製 –

答えて

1

そのそのモデル管理者クラスのフォーム

from django import forms 
from django.contrib import admin 
from myapp.models import Person 

class PersonForm(forms.ModelForm): 

    class Meta: 
     model = Person 
     exclude = ['name'] 

class PersonAdmin(admin.ModelAdmin): 
    exclude = ['age'] 
    form = PersonForm 

あなたはウィジェットを変更して、オートコンプリートとajaxでselectizeのようなものを使用できます。

関連する問題