Создание списка утверждающих лиц 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)
    
   
  
Вернуться на верх