【发布时间】:2022-10-12 21:45:52
【问题描述】:
所以我有一个与班级/房间有外键关系的user 模型,我希望用户能够按下一个按钮,并且所有用户/学生将根据字段平均分布在整个班级/房间外键从年龄,身高等领域的模型。
因此,如果有 4 个学生 2 14 岁和 2 15 岁并且有两个班级,则该功能应将一个 14 岁和一个 15 岁的学生放在一个班级,另一个班级也一样,只需遍历用户并按所选字段值平均分配它们,任何资源或代码 sn-p 都将受到高度赞赏。
用户模型(如果需要)
class User(AbstractBaseUser, PermissionsMixin):
class SEX(models.TextChoices):
MALE = "MALE", "Male"
FEMALE = "FEMALE", "Female"
id = models.UUIDField(
primary_key=True, default=uuid.uuid4, editable=False, unique=True)
sex = models.CharField(
_("Sex Type"), max_length=50, choices=SEX.choices, default=None, blank=True, null=True)
email = models.EmailField(
_("Email"), max_length=254, unique=True, default=None, blank=True, null=True)
student_id = models.CharField(
_("student id"), unique=True, max_length=10, blank=True, null=True)
firstname = models.CharField(max_length=250, blank=False, null=True)
middlename = models.CharField(max_length=250, blank=False, null=True)
lastname = models.CharField(max_length=250, blank=False, null=True)
grade = models.ForeignKey(Grade, verbose_name=_(
"grade"), on_delete=models.SET_NULL, blank=True, null=True)
room = models.ForeignKey(Class, verbose_name=_(
"class"), related_name="student_room", on_delete=models.SET_NULL, blank=True, null=True) // class model forignkey
age = IntegerRangeField(min_value=1, max_value=99,
default=25, blank=True, null=True)
image = models.ImageField(
_("photo"), upload_to='user/Users/profile_pic', max_length=None, blank=False, null=True)
joined_date = models.DateTimeField(
_("created at"), auto_now=False, auto_now_add=True)
has_rated = models.BooleanField(_("Has rated the app"), default=False)
...
class Meta:
verbose_name = _("User")
verbose_name_plural = _("Users")
ordering = ('-joined_date',)
objects = CustomAccountManager()
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = ['firstname', 'lastname']
def __str__(self):
return self.firstname
【问题讨论】:
-
显示您的数据和模型
-
补充说,但我只需要某种 sn-p,就知道它是如何制作的。