Python 是否可以将一个模型的多个字段的主键值保存到另一个模型&x27;s单曲';字段';使用外键关系?

Python 是否可以将一个模型的多个字段的主键值保存到另一个模型&x27;s单曲';字段';使用外键关系?,python,django,django-rest-framework,Python,Django,Django Rest Framework,models.py: import datetime from django.db import models from pygments.lexers import get_all_lexers LEXERS = [item for item in get_all_lexers() if item[1]] class Classname(models.Model): class_name = models.CharField(max_length=8) def __str

models.py:

import datetime
from django.db import models
from pygments.lexers import get_all_lexers


LEXERS = [item for item in get_all_lexers() if item[1]]

class Classname(models.Model):
    class_name = models.CharField(max_length=8)
    def __str__(self):
        return self.class_name

class Sectionname(models.Model):
    class_name = models.ForeignKey(Classname)
    section_name = models.CharField(max_length=1, default='A')
    def __str__(self):
        return self.section_name

class Teachername(models.Model):
    field = """ I want to define here a foreign key field(inherited from Sectionname model)which saves the primary key value of row corresponding to two fields (class_name, section_name) above."""
    teachname = models.CharField(max_length=50, verbose_name='teacher Name')
    def __str__(self):
        return self.teachname

class Attendancename(models.Model):
    teacher_name = models.ForeignKey(Teachername)
    date = models.DateField('Date')
    intime = models.TimeField('IN-TIME')
    outtime = models.TimeField('OUT-TIME')

    def hours_conversion(self):
        tdelta = (datetime.datetime.combine(datetime.date.today(),self.outtime) - datetime.datetime.combine(datetime.date.today(),self.intime))
        hours, minutes = tdelta.seconds//3600, (tdelta.seconds//60)%60
    return '{0}hrs {1}mins'.format(hours, minutes)

    def __str__(self):
        return "%s" %self.teacher_name
forms.py:

from django import forms
from django.forms import ModelForm
from .models import Classname, Sectionname, Teachername, Attendancename

class ClassnameForm(ModelForm):
    class_name = forms.CharField(max_length=8)
    class Meta:
        model = Classname
        fields = ('class_name',)

class SectionnameForm(ModelForm):
    class_name = forms.ModelChoiceField(queryset=Classname.objects.all())
    class Meta:
        model = Sectionname
        fields = ('section_name', 'class_name',)

class TeachernameForm(ModelForm):
    field = """ Here I also want to do the same thing, I tried to make a form field, which shows value of both 'section_name' and 'class_name' from above model but only saves the value of corresponding row's primary key."""
    class Meta:
        model = Teachername
        fields = ('classname', 'secname', 'teachname',)

class AttendancenameForm(ModelForm):
    teacher_name = forms.ModelChoiceField(queryset=Teachername.objects.all())
    class Meta:
        model = Attendancename
        fields = ('teacher_name', 'date', 'intime', 'outtime',)
我试图将Sectionname模型字段的“pk”值(
'calss_name'
'section_name'
)保存到Terachername模型的单个
'field'
)中,我还想使用表单字段
'field'
向用户显示这两个值,但在场景之后,只需要保存主键值

有可能吗?如果是,那么我如何在我的应用程序中实现它

求你了!提供你的建议

谢谢!提前…

您不能在一个
模型中存储两个外键到两个不同的表。ForeignKey
字段,而且它真的没有任何意义(如果原因对您来说不明显,那么您应该进一步了解关系模型)

但是无论如何:由于一个
Sectionname
属于一个
Classname
,您不需要任何东西,除了
Sectionname
pk就可以获得相关的
Classname

class Teachername(models.Model):
    sectionname = models.ForeignKey(Sectionname)
    teachname = models.CharField(max_length=50, verbose_name='teacher Name')
    def __str__(self):
        return self.teachname


teacher = Teachername.objects.get(pk=XXX)
print teacher, teacher.sectionname, teacher.sectionname.classname
或者,如果一名教师应教授多个部分:

class Teachername(models.Model):
    sectionnames = models.ManyToMany(Sectionname)
    teachname = models.CharField(max_length=50, verbose_name='teacher Name')
    def __str__(self):
        return self.teachname

teacher = Teachername.objects.get(pk=XXX)
for sectionname in teacher.sectionnames.all():
    print teacher, sectionname.classname

为什么不将
字段
定义为指向
节名
模型的
外键