Django ModelForm никогда не передает is_valid()

Я новичок в Django и сейчас пытаюсь сохранить данные, введенные из формы, в модели/базе данных. Проблема, как мне кажется, заключается в том, что я не хочу, чтобы все поля модели были доступны на форме. В моей модели есть следующие поля:

    description = models.TextField()
    date_referred = models.DateTimeField(default=timezone.now)
    full_name = models.CharField(max_length=100)
    email = models.EmailField(max_length=100)
    phone_number = models.CharField(max_length=17, blank=True)
    column_number = models.IntegerField()
    notes = models.TextField()
    colour = models.CharField(max_length=6)
    user = models.ForeignKey(User, on_delete=models.CASCADE) 

МодельФормы, которую я использую, выглядит следующим образом:

class ReferralForm(ModelForm):
    class Meta:
        model = kanban_item
        fields = ["item_name", "description", "full_name", "email", "phone_number"]

Код внутри файла views.py следующий:

def submit_referrals(request):
    form = ReferralForm()
    if request.method == "POST":
        form = ReferralForm()
        print(request.POST)
        if form.is_valid():
            print("VALID")
            referral = form.save(commit=False)
            referral.user = request.user
            referral.column_number = 0
            referral.colour = "ffffff"
            referral.save()
        else :
            print ("NOT VALID")

Как вы можете видеть, я пытаюсь создать модель из формы, затем добавить дополнительные поля и затем сохранить модель в базе данных. Это не работает, поскольку всякий раз, когда я отправляю форму, мой код не проходит дальше метода is_valid на форме.

Любые предложения или ответы будут признательны, так как я потерялся, спасибо.

Вам необходимо построить ReferralForm с данными (request.POST) и, возможно, с файлами (request.FILES).

Форма Form без данных называется "unbounded", а не ограниченные формы всегда недействительны. Таким образом, вы создаете форму с данными с помощью:

def submit_referrals(request):
    form = ReferralForm()
    if request.method == "POST":
        form = ReferralForm(request.POST, request.FILES)  # 🖘 add data and files
        if form.is_valid():
            print("VALID")
            referral = form.save(commit=False)
            referral.user = request.user
            referral.column_number = 0
            referral.colour = "ffffff"
            referral.save()
        else :
            print ("NOT VALID")
Вернуться на верх