使元素列表成为“Groupe”表的一个属性,其中的元素是“Etudiant”选项卡的记录(元组)

2024-10-03 11:17:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我创建了一个数据库,其中一个表的属性之一必须是另一个表的元组(记录)列表。我的文件中有一个“Etudiant”表和一个“Groupe”表。请问怎么做

下面是包含相关表格的代码摘录

from django.db import models;
from django.contrib.auth.models import User;
from django.utils import timezone;


# Table qui stockera les groupes aux quelles les étudiants appartiennent
class Groupe(models.Model):

    numero_groupe       = models.IntegerField();
    nombre_de_membre    = models.IntegerField();
    liste_etudiant      = ; # Here an students list;
    chef_de_groupe_tp   = models.CharField(max_length=100);
    ue                  = models.ForeignKey(UE, on_delete=models.PROTECT); 
    date_creation       = models.DateTimeField(default=timezone.now, verbose_name="Date de création");

    class Meta:
        verbose_name    = "groupe";
        ordering        = ['date'];

    def __str__(self):
        info_groupe     = ue.code_ue + " : "  numero_groupe;

        return self.info_groupe;


# Table qui stockera les informations concernant les étudiants
class Etudiant(models.Model):

    matricule_etudiant      = models.CharField(max_length=10);
    user                    = models.OneToOneField(User); # étudiant a désormais les attributs de User.
    niveau                  = models.CharField(max_length=10);
    avatar                  = models.ImageField(null=True, blank=True, upload_to="avatar/etudiant/");
    td                      = models.ManyToManyField(TD, through='Note_TD');
    tp                      = models.ManyToManyField(TP, through='Note_TP');

    class Meta:
        verbose_name        = "étudiant";
        ordering            = ['matricule_etudiant'];

    def __str__(self):
        info_etudiant       = matricule_etudiant + " " + user.last_name + " " + user.firstname + " " + niveau;

        return self.info_etudiant;


Tags: djangonamefromimportselfinfomodelsde
1条回答
网友
1楼 · 发布于 2024-10-03 11:17:53

据我所知,django里面没有ListField。如果使用postgres作为数据库,则可以使用django.contrib.postgres.fields中的ArrayField。否则,您可以使用下面给出的解决方案,但它有自己的局限性(您不能像普通字段一样进行查询)

import json

class Groupe(models.Model):
    _liste_etudiant = models.TextField()

    @property
    def liste_etudiant(self):
        return json.loads(self._liste_etudiant)

    @property.setter
    def liste_etudiant(self, value):
        self._liste_etudiant = json.dumps(value)

或者,如果使用postgres,则可以使用JsonFieldfrom django.contrib.postgres.fields。在这种情况下,您还可以查询此字段

相关问题 更多 >