Я создаю приложение, в котором пользователи могут добавлять свои курсы с указанием своих данных. Мое намерение состоит в том, чтобы просмотреть всех пользователей, зачисленных на курс, на основе кода курса, независимо от других деталей курса (таких как время зачисления). В настоящее время
моя модель пользователя:
class Profile(AbstractUser):
bio = models.TextField()
university = models.CharField(max_length=50)
image = models.ImageField(default='profile_image/profile_default.png', upload_to='profile_image', blank=True)
friends = models.ManyToManyField("Profile", blank=True)
def __str__(self):
return self.username
моя модель курса:
class Course(models.Model):
class Semester(models.TextChoices):
SPRING = '1', 'Spring'
SUMMER = '2', 'Summer'
FALL = '3', 'Fall'
WINTER = '4', 'Winter'
NONE = '0', 'None'
class Difficulty(models.TextChoices):
EASY = '1', 'Easy'
MEDIUM = '2', 'Medium'
HARD = '3', 'Hard'
FAILED = '4', 'Failed'
users = models.ManyToManyField(Profile,related_name='courses')
course_code = models.CharField(max_length=20)
course_university = models.CharField(max_length=100)
course_instructor = models.CharField(max_length=100)
course_year = models.IntegerField(('year'), validators=[MinValueValidator(1984), max_value_current_year])
course_likes = models.ManyToManyField(Profile, blank=True, related_name='course_likes')
course_dislikes = models.ManyToManyField(Profile, blank=True, related_name='course_dislikes')
course_semester = models.CharField(
max_length=2,
choices=Semester.choices,
default=Semester.NONE
)
course_difficulty = models.CharField(
max_length=2,
choices=Difficulty.choices,
default=Difficulty.MEDIUM
)
def __str__(self):
return self.course_code
def save(self, *args, **kwargs):
self.course_code = self.course_code.upper().replace(' ', '')
self.course_university = self.course_university.strip().lower()
self.course_instructor = self.course_instructor.strip().lower()
super(Course, self).save(*args, **kwargs)
Как я могу просмотреть всех пользователей с одним и тем же номером курса? Подходит ли эта структура базы данных для этого использования?
Я пытаюсь создать метод с именем 'get_users_enrolled'
, но я застрял на том, как запрос должен получить список пользователей.
my текущий запрос:
def get_users_enrolled(self):
users = Courses.users.filter(course_code=self.course_code)
Форма создания моего курса:
class CourseForm(forms.ModelForm):
course_code = forms.CharField(
label='',
max_length=12,
min_length=5,
required=True,
validators=[alphanumeric],
widget=forms.TextInput(
attrs={
"placeholder": "Course Code",
"class": "form-control"
}
)
)
instructor = forms.CharField(
label='',
max_length=50,
min_length=2,
required=True,
validators=[alphabetical],
widget=forms.TextInput(
attrs={
"placeholder": "Instructor Lastname",
"class": "form-control"
}
)
)
university = forms.CharField(
label='',
max_length=50,
min_length=2,
required=False,
validators=[alphanumeric],
widget=forms.TextInput(
attrs={
"placeholder": "University",
"class": "form-control"
}
)
)
course_year = forms.TypedChoiceField(
coerce=int,
choices=year_choices,
initial=current_year,
widget=forms.TextInput(
attrs={
"placeholder": "Term",
"class": "form-control"
}
)
)
class Meta:
model = Course
fields=('course_code','course_instructor','course_year','course_semester','course_difficulty',)
Заранее спасибо за помощь!