获取的不是所有值,而是另一个具有一对一字段的模型中字段的特定值



我有两个模型。 1. 课程 2. 第一年

这是课程模型

class Courses(models.Model):
class Meta:
verbose_name_plural = 'Courses'
year_choices = [
('----', '----'),
('First Year', 'First Year'),
('Second Year', 'Second Year'),
('Third Year', 'Third Year'),
('Fourth Year', 'Fourth Year'),
('Minor', 'Minor'),
]
year = models.CharField(max_length=50,default='----',choices=year_choices)
course_code = models.CharField(max_length=10,
default='',
validators=[MinLengthValidator(1)])

这是一年级模型

class FirstYear(models.Model):
class Meta:
verbose_name_plural = '1. First Year'
course   = models.OneToOneField(Courses,
default='',
on_delete=models.CASCADE)
title = models.CharField(max_length=100,default='')

def __str__(self):
return '{}'.format(self.title).capitalize()

我是Django的新手。我的问题是,只有在第一年而不是全年时,我才必须调用course_code字段。

Example : Course Model
object-1 -> year = First Year
course_code = HJK456
object-2 -> year = Second Year
course_code = ERT890

在这里,我只能在一对一字段中获得 HJK456,而不是 ERT890。我应该只显示选择为第一年的选项。帮助我如何过滤。

请在这里帮助我。谢谢。

使用limit_choices_to参数限制 admin: 中显示的选项 https://docs.djangoproject.com/en/2.2/ref/models/fields/#django.db.models.ForeignKey.limit_choices_to

class FirstYear(models.Model):
class Meta:
verbose_name_plural = '1. First Year'
course = models.OneToOneField(Courses,
default='',
on_delete=models.CASCADE,
limit_choices_to={'year': 'First Year'})
title = models.CharField(max_length=100,default='')

最新更新