Мне нужна помощь в 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}"