Я пытаюсь создать базовое веб-приложение для небольшого проекта и сталкиваюсь с проблемой, когда всякий раз, когда я использую какой-либо тип связи между двумя атрибутами.Например, когда я пытаюсь извлечь некоторые данные из другой таблицы, они отображаются как «Person object (1)» или «project object (1)».Как я могу гарантировать, что этого не произойдет, и имя человека и название проекта появятся?Я также готов принять любую помощь в улучшении кодов моей базы данных. Заранее благодарю.
Ниже приведен исходный код.
Когда я пытаюсь извлечь некоторые данные из другой таблицы, они отображаются как «Объект персоны (1)» или «Объект проекта (1)».Как я могу убедиться, что этого не произойдет, и имя человека и имя проекта появятся?
из django.db import models
from django.db import models
from django.contrib.auth.models import User, Group
from django.db import models
from django.core.mail import EmailMessage
from django.contrib import admin
class Project(models.Model):
STATUS_CHOICE = (
('Work Assigned', 'Work Assigned'),
('Work in Progress', 'Work in Progress'),
('Testing', 'Testing'),
)
project_name = models.CharField(max_length=100)
project_description = models.CharField(max_length=100)
status_of_the_project = models.CharField(max_length=18, choices=STATUS_CHOICE)
created = models.DateTimeField(auto_now_add=True, null=True, blank=True)
finish_date = models.DateTimeField(null=True, blank=True)
supporting_documents = models.FileField(null=True, blank=True)
Admin_Name = models.CharField(max_length=100)
def __str__(self):
return self.project_name
class Meta:
verbose_name = "List of Projects"
verbose_name_plural = "List of Projects"
class Person(models.Model):
PERSON_TYPE = (
('Admin', 'Admin'),
('Project Manager', 'Project Manager'),
('Technician', 'Technician'),
('Tester', 'Tester')
)
user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='user_person')
projects = models.ManyToManyField(Project, null=True, related_name='people')
mail_id = models.EmailField(max_length=50, blank=True, null=True)
person_type = models.CharField(max_length=18, choices=PERSON_TYPE)
class Meta:
verbose_name = "User-Project Assignment"
verbose_name_plural = "User-Project Assignment"
class Bug(models.Model):
STATUS_CHOICE = (
('Unassigned', 'Unassigned'),
('Assigned', 'Assigned'),
('Testing', 'Testing'),
('Tested', 'tested'),
('Fixed', 'Fixed')
)
SITUATION_TYPE = (
('Bug', 'Bug'),
('Issue', 'Issue'),
('Enhancement', 'Enhancement'),
('Not an issue or bug', 'Not an issue or bug'),
('Fixed', 'Fixed')
)
project = models.ForeignKey(Project, on_delete=models.CASCADE)
issue_title = models.CharField(max_length=50, blank=True, null=True)
situation_type = models.CharField(max_length=25, choices=SITUATION_TYPE)
basic_description = models.CharField(max_length=100)
detailed_description = models.TextField(default='The Description, here.')
status = models.CharField(max_length=18, choices=STATUS_CHOICE)
assigned_to = models.ForeignKey(Person, on_delete=models.CASCADE, default=False)
reported_by = models.CharField(max_length=50, blank=True, null=True)
reporters_mail_id = models.EmailField(max_length=50, blank=True, null=True)
reported_date = models.DateTimeField(null=True, blank=True)
created = models.DateTimeField(auto_now_add=True, null=True, blank=True)
updated = models.DateTimeField(auto_now=True, null=True, blank=True)
deadline_date = models.DateTimeField(null=True, blank=True)
supporting_documents_by_reporter = models.FileField(null=True, blank=True)
project_managers_comment = models.TextField(default='The Description, here.')
supporting_documents_by_project_manager = models.FileField(null=True, blank=True)
technicians_comment = models.TextField(default='The Description, here.')
supporting_documents_by_technician = models.FileField(null=True, blank=True)
testers_comment = models.TextField(default='The Description, here.')
supporting_documents_by_tester = models.FileField(null=True, blank=True)
admin = models.ForeignKey(Person, on_delete=models.CASCADE, related_name='user_admin', default=False)
def __str__(self):
return '{} ({}) [{} {}]'.format(self.project, self.situation_type, self.status, self.issue_title)
class Meta:
verbose_name = "Project-Tasks"
verbose_name_plural = "Project-Tasks"