Skip to main content
 首页 » 编程设计

python之在管理员中预填充水平的 django 过滤器

2024年08月30日2498°冷暖

我有一个关于网球网络的简单 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') 
        }), 
    ) 

显然,我想预填充水平“time_first”过滤器,其中只有可以在晚上 7 点播放的播放器,并且同上。 这怎么可能?

提前致谢。

请您参考如下方法:

感谢您的帮助。我在 davydany's website 上找到了一个很好的解决方案:

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

我希望这对其他人有帮助。