Нужно ли добавлять все поля в ModelForm, даже если только одному из них требуется ввод данных пользователем? - PullRequest
0 голосов
/ 14 апреля 2019

Только одно поле требует ввода данных пользователем.Другие зависят от этого поля и заполняются программно перед сохранением формы.Добавление других полей в ModelForm и их скрытие - единственное решение или есть лучший способ?

class Sentence(models.Model):
    sent = models.CharField(max_length=150) # Only this field needs user input
    sent_correct = models.CharField(max_length=300, blank=True)
    msg_list = ArrayField(models.CharField(max_length=500), blank=True, default=list)
    pub_date = models.DateTimeField(default=timezone.now)
​
​
class SentenceForm(ModelForm):
    class Meta:
        model = Sentence
        fields = ['sent']
​
​
# I want to avoid attribute error in the view and programatically populate the fields before saving the form 

def home(request):
    sentences = Sentence.objects.all()
    if request.method == 'POST':
        form = SentenceForm(request.POST)
        if form.is_valid():
            cd = form.cleaned_data
            form.save(commit=False)
            sent = cd['sent']
            # here I need to process sent and populate other fields with 
            # the results then save the form
            form.save()
            return render(request, 'home.html', {'sentences': sentences, 'msg_list': msg_list, 'form': form})
    else:
        form = SentenceForm()


...