首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django auth群模型m2m

Django auth群模型m2m
EN

Stack Overflow用户
提问于 2011-03-14 20:51:38
回答 1查看 1.4K关注 0票数 0

最近,我在一个通用的题词系统中工作,帮助学生在班级或实验室注册。但是我对实验课中的ManyToManyField逻辑有问题。

代码语言:javascript
复制
from django.db import models
from django.contrib.auth.models import User

class Day(models.Model):
    name = models.CharField(max_length=20, primary_key=True)

    def __unicode__(self):
        return u"%s" % self.name


class LabName(models.Model):
    lab_name = models.CharField(max_length=50, primary_key=True)

    class Meta:
        verbose_name_plural = 'LabNames'

    def __unicode__(self):
        return u'%s' % self.lab_name


class Lab(models.Model):
    name = models.ForeignKey(LabName)
    start_hour = models.TimeField()
    length = models.IntegerField(help_text="Given in minutes")
    classDays = models.ManyToManyField(Day)
    start_date = models.DateField()
    finish_date = models.DateField()
    max_cap = models.SmallIntegerField(help_text="Maximun number of students")
    teacher = models.ForeignKey(User, related_name="Teachers")
    students = models.ManyToManyField(User)

    class Meta:
        verbose_name_plural = 'Labs'
    def __unicode__(self):
        return u"%s %s" % (self.id, self.name)

我更喜欢关联一个名为“same”的特定组(django.contrib.auth.models.Group),而不是所有用户,或者至少筛选和/或验证这个字段,只添加和查看学生,也可以对教师字段进行同样的操作。

更新1: --我刚刚注意到,也许我可以使用可选参数limit_choices_to过滤在某个组中的用户。

问题是:如何使用limit_choices_to参数仅显示“学生”组或“教师”组中的用户?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-03-14 23:12:11

啊,你看清楚多了。

我会重写{'id__in' : Group.objects.all().get(name='Teachers').user_set.all()}

致:{'groups__name' : 'Teachers' }

另外,如果您希望将您的管理功能与您的模型更多地分离开来(您知道admin最初完全在模型中吗?),您可以使用涉外钥匙,这无疑是将您的模型与管理垃圾隔离开来的好方法。

代码语言:javascript
复制
class MyModelAdmin(admin.ModelAdmin):
    def formfield_for_foreignkey(self, db_field, request, **kwargs):
        if db_field.name == "teacher":
            kwargs["queryset"] = User.objects.filter(groups__name='Teacher')
        if db_field.name == "students":
            kwargs["queryset"] = User.objects.filter(groups__name='Student')
        return super(MyModelAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5304361

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档