Как go о разбиении множественного выбора в Django форме? - PullRequest
0 голосов
/ 17 февраля 2020

Чтобы сделать более удобный интерфейс на моем веб-сайте, я хотел бы разделить множественный выбор на пару множественных выборок на основе атрибута. Как бы вы go об этом?

Models.py

У меня в основном 4 класса, как показано ниже. У меня есть график, с которым могут быть связаны задачи. Кроме того, пользователь должен иметь возможность назначать пользовательские поля по расписанию. Примером пользовательского поля может быть «topi c» или «priority»: все, что решит пользователь. Каждое пользовательское поле может иметь несколько значений пользовательских полей. Например, значениями «приоритет» могут быть «Срочно», «Нормально» и «Нет ru sh». Каждой задаче должно быть присвоено значение. В идеале мне бы хотелось, чтобы в каждом пользовательском поле было только одно возможное значение. Поэтому, следуя приведенным выше примерам, задача не может быть «срочной» и «нормальной» одновременно. Это еще одна вещь, которую я должен выяснить, поэтому любые советы приветствуются, но выходят за рамки этого вопроса.

class Schedule(models.Model):
    title = models.CharField(max_length=50)
    def __str__(self):
        return self.title

class Tasks(models.Model):
    schedule = models.ForeignKey(Schedule, on_delete=models.CASCADE)
    title = models.TextField()
    start = models.DateTimeField()
    end = models.DateTimeField()
    userfieldvalues = models.ManyToManyField("UserFieldValues", blank=True)
    def __str__(self):
         return self.title

class UserField(models.Model):
    name = models.CharField(max_length=50)
    schedule = models.ForeignKey(Schedule, on_delete=models.CASCADE)
    def __str__(self):
        return self.name

class UserFieldValues(models.Model):
    value = models.CharField(max_length=50)
    userfield = models.ForeignKey(UserField, on_delete=models.CASCADE, related_name="values")
    def __str__(self):
        return self.value

Overview of my model classes and relations.

Template and forms.py

Я создал форму:

class TaskForm(forms.ModelForm):
    class Meta:
        model = Task
        fields = ("title", "start", "end", "userfieldvalues")
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.fields['title'].label = 'Task Title'
        self.fields['title'].widget.attrs['rows'] = 1
        self.fields['start'].widget.format = '%H:%Mh, %d-%m-%Y'
        self.fields['start'].input_formats = ['%H:%Mh, %d-%m-%Y']
        self.fields['end'].widget.format = '%H:%Mh, %d-%m-%Y'
        self.fields['end'].input_formats = ['%H:%Mh, %d-%m-%Y']

В моем шаблоне я отображаю форму. Для значений пользовательских полей теперь отображаются все опции множественного выбора. Я хотел бы создать множественный выбор для каждого UserField, но я не знаю, как go о.

...