【发布时间】:2020-01-16 14:52:05
【问题描述】:
我无法从表单中为 ForeignKey 保存适当的值。 ForeignKey 的值总是写入数据库,id = 1。 在 html 格式中,我的模型中的值(在数据库中)被输出到 select。但是从表单发送数据时,forgonekey类型的字段的值一直以id = 1的方式写入数据库
models.py:
class Sportsman(models.Model):
first_name = models.CharField(max_length=64, blank=True, null=True, default=None, verbose_name='Имя')
last_name = models.CharField(max_length=64, blank=True, null=True, default=None, verbose_name='Фамилия')
gender = models.ForeignKey(Gender, on_delete=models.CASCADE, null=True, blank=True, default=True, verbose_name='Пол')
tournament = models.ForeignKey(Tournament, null=True, blank=True, default=True, on_delete=models.CASCADE, verbose_name='Турнир')
def __str__(self):
return "Спортсмен(ка): %s %s, почта: %s" % (self.first_name, self.last_name, self.email)
class Meta:
verbose_name = 'Спортсмен'
verbose_name_plural = 'Спортсмены'
def save(self, *args, **kwargs):
super(Sportsman, self).save(*args, **kwargs)
forms.py:
class SportsmenForm(forms.ModelForm):
class Meta:
model = Sportsman
exclude = ['created', 'updated']
views.py:
def sportsman(request):
documents = Document.objects.filter(is_active=True)
form = SportsmenForm(request.POST or None)
if request.method == "POST" and form.is_valid():
print(request.POST)
print(form.cleaned_data)
print(form.cleaned_data['email'])
form.save()
new_form = form.save()
return render(request, 'sportsman/sportsman.html', locals())
<QueryDict: {'csrfmiddlewaretoken': ['BzBeiKE82LDcd3tmdzZGSmpOWQatc52SSO7ScEOm7eCVdXsHQWxerSzTZa6KC5xq'], 'first_name': ['test_name'], 'last_name': ['test_name'], '<select name=': ['3']}
>
【问题讨论】:
标签: django python-3.x database forms django-queryset