Мне нужна помощь в django

когда бы я не пытался добавить поле в админ панели, я всегда путаюсь [][1] model.py

from django.db import models
from django.db.models.base import ModelState

# Create your models here.
class Course(models.Model):
    faculty = models.CharField(max_length=100)

class Semester(models.Model):
    sem = models.CharField(max_length=100)
    faculty = models.ForeignKey(Course, on_delete=models.CASCADE)
    

class Subject(models.Model):
    faculty = models.ForeignKey(Course, on_delete=models.CASCADE)
    sem = models.ForeignKey(Semester, on_delete=models.CASCADE)
    subject_name = models.CharField(max_length=100)

    def __str__(self):
        return str(self.id)

какое поле чем является? я хочу, чтобы каждое поле имело четкое название в панели администратора. [1]: https://i.stack.imgur.com/GKXNO.png

Вы должны добавить встроенный метод __str__ в класс вашей модели следующим образом:

class Semester(models.Model):
    sem = models.CharField(max_length=100)
    faculty = models.ForeignKey(Course, on_delete=models.CASCADE)

    def __str__(self):
        return self.sem

Таким образом, Django знает, что выводить в виде строки для экземпляра модели, который он представляет в панели администратора.

Вы можете использовать F expression, чтобы сделать его более динамичным:

class Semester(models.Model):
    sem = models.CharField(max_length=100)
    faculty = models.ForeignKey(Course, on_delete=models.CASCADE)

    def __str__(self):
        return F"Semester {self.sem} at Faculty {self.faculty}"
Вернуться на верх