2

私はテニス ネットワークに関する簡単な Django プロジェクトを持っています。そして、管理者インターフェースの水平方向のフィルターにプレーヤーの名前を事前入力したいと思います。また、一部のプレイヤーは午後 7 時にプレイし、他のプレイヤーは午後 9 時にプレイできます。私のmodel.pyは次のとおりです:

class thursday(models.Model):
    date = models.DateField()
    time_first = models.ManyToManyField(player, related_name='firsttime', verbose_name='7PM')
    time_second = models.ManyToManyField(player, related_name='secondtime', verbose_name='9PM')

と私のadmin.py :

class ThursdayAdmin(admin.ModelAdmin):
    list_display = ('date', 'status')
    search_fields = ['date']
    filter_horizontal = ('time_first', 'time_second',)
    list_filter = ('date',)
    fieldsets = (
        (None, {
            'fields': ('date', 'time_first', 'time_second', 'status')
        }),
    )

明らかに、午後 7 時にプレイできるプレーヤーのみを水平方向の "time_first" フィルターに事前入力し、2 番目のプレーヤーも同じようにしたいと考えています。どうすればそれが可能ですか?

前もって感謝します。

4

2 に答える 2

2

ご協力いただきありがとうございます。私はdavydanyのウェブサイトでとても素敵な解決策を見つけました:

time_first = models.ManyToManyField(player, related_name='firsttime', verbose_name='7PM', limit_choices_to={'id__in': player.objects.filter(preference='7PM')})

これが他の人に役立つことを願っています。

于 2012-09-14T08:52:12.877 に答える
1

いつでもカスタムフォームを作成できます

from django.contrib.admin.widgets import FilteredSelectMultiple
class SomeForm(forms.ModelForm):
    class Meta:
         model = MyModel
    time_first = ModelMultipleChoiceField(
    queryset=Player.objects.filter(......), required=False, widget=FilteredSelectMultiple)
于 2012-09-13T14:22:08.393 に答える