django флажок выбрать несколько моделей - PullRequest
0 голосов
/ 23 февраля 2020

Привет У меня есть следующая django модель:

class Issue(models.Model):
    title = models.CharField(max_length=200)
    date = models.DateTimeField(auto_now=True)
    assignee = models.ForeignKey(User, on_delete=models.CASCADE, related_name='assignee')
    owner = models.ForeignKey(User, on_delete=models.CASCADE, related_name='owner', null=True, blank=True)
    description = models.TextField()
    state = models.IntegerField(choices=STATUS_CHOICES, default=1)
    priority = models.IntegerField(choices=RELEVANCE_CHOICES, default=2)
    expired_date = models.DateField(auto_now=False, null=True, blank=True)

и форма, позволяющая пользователю создать экземпляр Issue:

class IssueForm(forms.ModelForm):

    class Meta:
        model = Issue
        fields = ('title', 'description', 'assignee', 'state', 'priority', 'expired_date')


    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.fields['title'].label = "Titolo"
        self.fields['description'].label = "Descrizione"
        self.fields['state'].label = "Stato"
        self.fields['priority'].label = "Priorità"
        self.fields['expired_date'].label = "Termine"
        self.fields['expired_date'].widget.attrs.update({'class': 'datepicker'})
        self.fields['assignee'] = forms.MultipleChoiceField(
            choices=self.fields['assignee'].choices,
            widget=forms.CheckboxSelectMultiple,
            label=("Assegnatario")
        )

    def clean(self):
        cleaned_data = super().clean()
        user_id = [i for i in cleaned_data['assignee']]
        cleaned_data['assignee'] = [User.objects.get(id=i) for i in user_id]
        return cleaned_data

Я отображаю эту форму а поле assignee является флажком. Я хотел бы иметь возможность выбрать несколько правопреемников для одной и той же проблемы, но я получил ошибку, потому что модель проблемы ожидает только один User экземпляр
Как я могу изменить свою модель Issue, чтобы получить более одного пользователь? Спасибо

1 Ответ

1 голос
/ 23 февраля 2020

вы можете создать новый класс и назвать его Issue_Instance, где каждый объект Issue может иметь в качестве внешнего ключа правопреемника, проблема в том, что отношение один ко многим, потому что вам нужно выбрать более одного правопреемника, а Django - нет. поддержать идею наличия массива или списка внешних ключей (я не знаю каких-либо фреймворков, которые делают: =)), поэтому я бы предложил создать новый класс или сделать так, чтобы поле внешнего ключа с отношением один-ко-многим читалось об этом будет очень полезно решить вашу проблему

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...