Django 1.11-将条件添加到Admin中的字段

时间:2019-04-03 00:22:10

标签: django django-models django-admin

问题

我有一个与用户有多对多关系的模型(挑战)。用户模型与Profile具有一对一的关系。配置文件用于存储有关用户的自定义内容。在Django管理员中,create表单必须仅在其Profile模型中显示具有is_partner True字段的用户。我可以在不创建另一个表来存储合作伙伴的情况下实现这一目标吗?

型号

class Challenge(models.Model):
    partners = models.ManyToManyField(User)
    participants = models.ManyToManyField(Team)
    details = models.TextField(max_length=512, default=None, blank=True)
    description = models.TextField(max_length=512, default=None, blank=True)
    documentation = models.TextField(max_length=512, default=None, blank=True)
    prize = models.TextField(max_length=512, default=None, blank=True)
    live = models.BooleanField(default=False)

1 个答案:

答案 0 :(得分:1)

您必须创建一个自定义表单来验证您提到的逻辑,以保存或不保存m2m关系。根据{{​​3}}

class MyModelAdmin(admin.ModelAdmin):
    def get_queryset(self, request):
        qs = super(MyModelAdmin, self).get_queryset(request)
        if request.user.is_superuser:
            return qs
        return qs.filter(author=request.user)