我想在这个问题上寻求一些帮助,我对django相当陌生,到目前为止我很喜欢。
我有以下模式:
class Courses_list(models.Model):
Abbreviation = models.CharField(max_length=100, unique=True)
Course = models.CharField(max_length=100, unique=True)
def save(self, force_insert=False, force_update=False):
self.Abbreviation = self.Abbreviation.upper()
super(Courses_list, self).save(force_insert, force_update)
def __unicode__(self):
return self.Abbreviation
class Job_Posting(models.Model):
Job_Position = models.CharField(max_length=30, null=True, unique=True)
def __unicode__(self):
return self.Job_Position
class Educational_Requirement(models.Model):
fkey = models.ForeignKey('Job_Posting')
Course = models.ForeignKey('Courses_list')和形式:
class CustomField(forms.ModelChoiceField):
def label_from_instance(self, obj):
return obj.Course
class SampleForm(ModelForm):
COURSE = CourseField(queryset=Educational_Requirement.objects.all())我的储蓄是:
class MyModel(ModelForm):
course = models.CharField(max_length=50, null = True, blank = True)在我的测试应用程序的前端,SampleForm将Course显示为选项,但是如何获得Course的实际值并保存它呢?因为当我在admin中查看保存的COURSE时,它会显示Educational_Requirement Object而不是我在下拉列表中看到的值。我不能在__unicode__上使用Educational_Requirement,因为它会导致错误。
发布于 2016-02-20 18:18:37
我已经根据你最新的问题更新了我的答案。
为什么不使用ManyToManyField并让Django的ORM为您处理educational_requirement关系呢?这样,您可以使用Django的反向查找来处理ForeignKey的名称。
class Courses_list(models.Model):
Abbreviation = models.CharField(max_length=100, unique=True)
Course = models.CharField(max_length=100, unique=True)
def save(self, force_insert=False, force_update=False):
self.Abbreviation = self.Abbreviation.upper()
super(Courses_list, self).save(force_insert, force_update)
def __unicode__(self):
return self.Abbreviation
class Meta:
verbose_name = 'Course'
verbose_name_plural = 'Courses'
class Job_Posting(models.Model):
Job_Position = models.CharField(max_length=30, null=True, unique=True)
educational_requirement = models.ManyToManyField(Courses_list)
def __unicode__(self):
return self.Job_Position
class Meta:
verbose_name = 'Job Position'
verbose_name_plural = 'Job Positions'https://stackoverflow.com/questions/35526920
复制相似问题