首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django:多个模型字段的模型选择字段

问Django:多个模型字段的模型选择字段
EN

Stack Overflow用户
提问于 2016-02-20 17:56:41
回答 1查看 1.1K关注 0票数 1

我想在这个问题上寻求一些帮助,我对django相当陌生,到目前为止我很喜欢。

我有以下模式:

代码语言:javascript
复制
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')

和形式:

代码语言:javascript
复制
class CustomField(forms.ModelChoiceField):
    def label_from_instance(self, obj):
         return obj.Course

class SampleForm(ModelForm):
    COURSE = CourseField(queryset=Educational_Requirement.objects.all())

我的储蓄是:

代码语言:javascript
复制
class MyModel(ModelForm):
    course = models.CharField(max_length=50, null = True, blank = True)

在我的测试应用程序的前端,SampleForm将Course显示为选项,但是如何获得Course的实际值并保存它呢?因为当我在admin中查看保存的COURSE时,它会显示Educational_Requirement Object而不是我在下拉列表中看到的值。我不能在__unicode__上使用Educational_Requirement,因为它会导致错误。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-20 18:18:37

我已经根据你最新的问题更新了我的答案。

为什么不使用ManyToManyField并让Django的ORM为您处理educational_requirement关系呢?这样,您可以使用Django的反向查找来处理ForeignKey的名称。

代码语言:javascript
复制
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'
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35526920

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档