Форма Djano не заполняется экземпляром пользователя [дубликат]
Я очень новичок в Django и работаю над своим первым проектом. Я пытаюсь заставить модель формы заполняться экземпляром пользователя. Я пытаюсь понять, почему при загрузке формы она не заполняется экземпляром пользователя. Форма также не обновляет мою модель.
Вот модель:
class Income(models.Model):
class Type(models.TextChoices):
SALARY = 'Sal', 'Salary'
VARIABLE = 'Var', 'Variable'
class PayFrequency(models.TextChoices):
MONTHLY = 'MON', 'Monthly'
BIWEEKLY = 'BW', 'Bi-weekly'
SEMIMONTHLY = 'SM', 'Semimonthly'
WEEKLY = 'W', 'Weekly'
ANNUAL = 'AN', 'Annually'
user = models.OneToOneField(
User,
on_delete=models.PROTECT,
primary_key=True,
)
pay_amount = models.DecimalField(max_digits=6, decimal_places=2, null=True, blank=True)
type = models.CharField(max_length=3, choices=Type.choices)
frequency = models.CharField(max_length=3, choices=PayFrequency.choices)
#Need day of the month, to calculate weekly, bi-weekly and monthly pay days
pay_date_one = models.IntegerField(
validators=[MaxValueValidator(31), MinValueValidator(1)]
)
#Need second date to calculate semi monthly(2x a month, so need both dates)
pay_date_two = models.IntegerField(
validators=[MaxValueValidator(28), MinValueValidator(1)], null=True, blank=True
)
def __str__(self):
return f"{self.user} Income"
Вот вид:
@login_required()
def income(request):
if request.method == "POST":
form = IncomeForm(request.POST, instance=request.user)
if form.is_valid():
form.save()
else:
form = IncomeForm(instance=request.user)
return render(request, 'home/income.html', {
"form": form
})
Вот шаблон:
{% extends "layout.html" %}
{% block title %} Income {% endblock %}
{% block content %}
<h1>Income</h1>
<div>
<form method="post">
{% csrf_token %}
{{form}}
<button>Save</button>
</form>
</div>
{% endblock content %}
Есть идеи, почему эта форма не заполняется или не обновляется при нажатии кнопки сохранения? У меня есть очень похожая модель и форма, которая работает так, как ожидалось, и я не замечаю ничего другого.
Я пытался обновить форму, чтобы выяснить, почему она не обновляет модель или не заполняется при загрузке формы.