Как отобразить значения столбцов вместо объектов в исходном ключевом столбце модели в django? - PullRequest
0 голосов
/ 19 апреля 2020

У меня есть столбец внешнего ключа в модели. И я использую модель формы для ее визуализации. Когда я сделал это переднему концу, html. Список отображается со значением ключевого объекта foriegn. Снимок экрана здесь Что мне нужно сделать, это показать указанные c значения столбца в списке выбора, чтобы пользователь мог легко выбирать. Ниже приведен код.

model.py



class Gurdian(models.Model):
    created_by = models.ForeignKey(
        User, on_delete=models.SET_NULL, default=1, null=True)
    name = models.CharField(max_length=200, null=True)
    contact = models.CharField(max_length=20)
    address = models.TextField(null=True)
    emerg_name = models.CharField(max_length=200, null=True)
    emerg_contact = models.CharField(max_length=20, null=True)
    emerg_relation = models.CharField(max_length=20, null=True)
    doc_name = models.CharField(max_length=200)
    doc_contact = models.CharField(max_length=20)
    blood_type = models.CharField(max_length=10)
    allergic = models.TextField(null=True)

class Students(models.Model):
    created_by = models.ForeignKey(
        User, on_delete=models.SET_NULL, default=1, null=True)
    name = models.CharField(max_length=200, null=True)
    dob = models.DateField(null=True)
    age = models.IntegerField()
    grade_choice = (
        ('G1', 'Grade-1'),
        ('G2', 'Grade-2'),
        ('G3', 'Grade-3'),
        ('G4', 'Grade-4'),
        ('G5', 'Grade-5'),
        ('G6', 'Grade-6'),
        ('G7', 'Grade-7'),
        ('G8', 'Grade-8'),
        ('G9', 'Grade-9'),
        ('G10', 'Grade-10'),
        ('G11', 'Grade-11'),
        ('G12', 'Grade-12'),
    )
    gender_choice=(
        ('M', 'Male'),
        ('F', 'Female'),
        ('N', 'None'),
    )
    gender=models.CharField(choices=gender_choice, max_length=10, null=True)
    grade = models.CharField(choices=grade_choice, max_length=10, null=True)
    attending_school = models.CharField(max_length=100)
    course = models.ForeignKey(
        Create_Class, on_delete=models.SET_NULL, default=1, null=True)
    address = models.TextField(null=True)
    parent_id = models.ForeignKey(
        Gurdian, on_delete=models.SET_NULL, default=1, null=True)

forms.py

class Student_Model_Form(forms.ModelForm):
    class Meta:
        model = Students
        fields = ('__all__')
        exclude = ('created_by', 'age', 'course')
        grade_choice = (
            ('G1', 'Grade-1'),
            ('G2', 'Grade-2'),
            ('G3', 'Grade-3'),
            ('G4', 'Grade-4'),
            ('G5', 'Grade-5'),
            ('G6', 'Grade-6'),
            ('G7', 'Grade-7'),
            ('G8', 'Grade-8'),
            ('G9', 'Grade-9'),
            ('G10', 'Grade-10'),
            ('G11', 'Grade-11'),
            ('G12', 'Grade-12'),
        )
        gender_choice=(
        ('M', 'Male'),
        ('F', 'Female'),
        ('N', 'None'),
    )
        widgets = {
            'name': forms.TextInput(attrs={'class': 'form-control'}),
            'dob': forms.DateTimeInput(attrs={'class': 'datetime-input form-control'}),
            'grade': forms.Select(choices=grade_choice, attrs={'class': 'form-control'}),
            'attending_school': forms.TextInput(attrs={'class': 'form-control'}),
            'address': forms.Textarea(attrs={'class': 'form-control', 'rows': 5}),
            'gender': forms.Select(choices=gender_choice, attrs={'class': 'form-control'}),
            'parent_id': forms.Select(attrs={'class': 'form-control'}),
        }

HTML

<form method='POST' action='{% url 'genius:stds-new' %}'>
    {% csrf_token %}
    {{form.as_p}}
    <button class="btn btn-warning" type="submit">Register</button>
</form>

Вы помогаете будет оценена. Спасибо!

1 Ответ

0 голосов
/ 19 апреля 2020

вы можете добавить метод str в ваших моделях

def __str__(self):
    returen self.created_by.username
...