Django管理员限制外键模型

时间:2016-01-27 22:37:39

标签: python django python-2.7 django-admin

我有以下模型设置:

问题在于,当我尝试在管理页面中提取对象时,computer_names链接到数十万行不相关且页面永远不会加载。如何将computer_names仅过滤为ManyToMany字段的用户所选对象?

class ScoringException(models.Model):
    class Meta:
        ordering = ['date_modified']
    requester = models.CharField('Requester',max_length=50,null=False,blank=False)
    computer_names = models.ManyToManyField(Computer)
    domain = models.ForeignKey(Domain)
    exception_kpi_types = models.ManyToManyField(ScoringType)
    expiration_date = models.DateField('Expiration Date')
    reason = models.CharField('Reason',max_length=1000,null=False,blank=False)
    approved = models.BooleanField('Approved')
    date_modified = models.DateTimeField('Date Updated',auto_now=True)

1 个答案:

答案 0 :(得分:1)

您可以在管理员中使用raw_id_fields,以便Django不会呈现数十万行数据:

@admin.register(ScoringException)
class ScoringExceptionAdmin(admin.ModelAdmin):
    ....
    raw_id_fields = ['computer_names']

使用raw_id_fields,Django将显示所选m2m对象的ID列表。还添加了一个搜索按钮,以便更轻松地为m2m关系添加新对象。

有关详细信息,请参阅documentation