Создание списка утверждающих лиц Django
Я пытаюсь создать приложение, в котором можно создавать расходы на основе проекта, и каждый проект должен иметь список утвердителей, которые будут утверждать расходы после загрузки в проект, как мне воспроизвести это в Django.
Что я пытался сделать. Я ввел утверждающих в форму как ModelMultipleChoiceField
self.fields['approvers'] = forms.ModelMultipleChoiceField(queryset=Profile.objects.all())
и сохранил его в виде списка в базе данных
def getApprovers(approvers):
id = []
for profile in approvers:
id.append(profile.id)
return id
в функции создания проекта
project.approvers = getApprovers(form.cleaned_data['approvers'])
Я создал templatetag для отображения списка одобрителей в виде объектов Profile Queryset. Я попытался выполнить итерации по сохраненному списку утверждающих, но продолжаю получать ошибки
def approvers_list(approvers):
for profile in list(approvers):
return profile
Как лучше это представить. вот проект и модели расходов
class Project(MiscClass):
owner = models.ForeignKey(Profile, on_delete=models.CASCADE, null=True, blank=True)
organisation = models.ForeignKey(Organisation, on_delete=models.SET_NULL, null=True, blank=True)
title = models.CharField(max_length=200, null=True, blank=True, unique=True)
slug = models.SlugField(max_length=500, null=True, blank=True, unique=True)
category = models.ForeignKey('Category', on_delete=models.CASCADE, null=True, blank=True)
description = models.TextField(null=True, blank=True)
approvers = models.CharField(max_length=100, null=True, blank=True, validators=[int_list_validator])
class Meta:
ordering = ['-created']
def __str__(self):
return str(self.title)
def save(self, *args, **kwargs):
self.slug = slugify(self.title)
super(Project, self).save(*args, **kwargs)
class Expense(MiscClass):
PROCESSING = 1
APPROVED = 2
DECLINED = 3
APPROVAL_STATUS = (
(PROCESSING, 'Processing'),
(APPROVED, 'Approved'),
(DECLINED, 'Declined')
)
owner = models.ForeignKey(User, on_delete=models.SET_NULL, blank=True, null=True)
title = models.CharField(max_length=300, null=True)
slug = models.SlugField(max_length=300 , null=True, unique=True)
amount = models.CharField(max_length=200, null=True, blank=True)
status = models.IntegerField(choices=APPROVAL_STATUS, default=PROCESSING)
description = models.TextField(blank=True, null=True)
refrence_number = models.CharField(max_length=300, unique=True, null=True)
category = models.ForeignKey('Category', on_delete=models.SET_NULL, null=True, blank=True)
date_due = models.DateTimeField(auto_now_add=False, null=True, blank=True)
merchant = models.CharField(max_length=200, null=True, blank=True)
expense_date = models.DateTimeField(auto_now_add=False, null=True, blank=True)
def __str__(self):
return str(self.title)
def save(self, *args, **kwargs):
self.slug = slugify(self.title)
return super(Expense, self).save(*args, **kwargs)