为什么我的模型字段不读取其 ForeignKey 的值,而是 returns 它的对象编号?

Why my model field doesn't read the value of its ForeignKey, it returns its object number instead?

我创建了一个模型,其中有一个我想成为动态下拉列表的字段。我创建了另一个模型并将它们与外键相关联。现在一切正常,除了下拉列表不显示其他模型的值,而是 returns 它的编号对象。

这是我的models.py:

from django.db import models
from django.core.validators import RegexValidator
from django.db.models.deletion import CASCADE

# Create your models here.

class Diagnosis(models.Model):
    diagnosis=models.CharField(max_length=30, blank=True)
    
class InitialData(models.Model):
    pattern = RegexValidator(r'RT\/[0-9]{4}\/[0-9]{2}\/[0-9]{4}', 'Enter RT Number properly!')
    pattern1 = RegexValidator(r'OOPL\/D\/00[0-9]', 'Enter Case Number properly!')
    case_number=models.CharField(max_length=10, primary_key=True, unique=True, validators=[pattern1], blank=True)
    date_of_admission=models.DateField(default=None)
    date_of_discharge=models.DateField(default=None)
    name=models.CharField(max_length=100, default=None)
    mr_uid=models.IntegerField(default=None)
    rt_number=models.CharField(max_length=15, blank=False, validators=[pattern], default=None)
    diagnosis=models.ForeignKey(Diagnosis, on_delete=CASCADE)

forms.py:

class TrackReportForm(ModelForm):
    class Meta:
        model=InitialData
        fields=('case_number', 'date_of_admission', 'date_of_discharge', 'name', 'mr_uid', 'rt_number', 'diagnosis')

class DiagnosisForm(ModelForm):
    class Meta:
        model=Diagnosis
        fields=('diagnosis',)

views.py:

def initialview(request):
    if request.method=='POST':
        fm_diagnosis=DiagnosisForm(request.POST)
        fm_initialdata=TrackReportForm(request.POST)
        if fm_diagnosis.is_valid() and fm_initialdata.is_valid:
            diagnosis=fm_diagnosis.save()
            initial=fm_initialdata.save(False)
            initial.diagnosis=diagnosis
            initial.save()
            fm_diagnosis=DiagnosisForm()
            fm_initialdata=TrackReportForm()
        return render(request, 'account/database.html', {'form1':fm_diagnosis, 'form2':fm_initialdata})
    else:
        fm_diagnosis=DiagnosisForm()
        fm_initialdata=TrackReportForm()
        return render(request, 'account/database.html', {'form1':fm_diagnosis, 'form2':fm_initialdata})

网址:

from account import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('data/', views.initialview),
]

模板:

<body>
    <form action="" method="post" novalidate>
        {% csrf_token %}
        {{form1.as_p}}
        {{form2.as_p}}
        <button type="submit">Save</button>
    </form>
</body>

需要更改什么?

您应该实施 __str__ 方法来决定如何渲染对象(在本例中为 Diagnosis):

class Diagnosis(models.Model):
    diagnosis=models.CharField(max_length=30, blank=True)

    def <b>__str__</b>(self):
        return self.diagnosis