Я пытаюсь создать веб-приложение Django, которое сохраняет информацию о пользователе и его хобби в локальной базе данных.По какой-то причине это не работает, и у меня возникают проблемы с выяснением проблемы.Вот мой код:
Файл models.py:
my_choices = (
(0, "None"),
(1, "Football"),
(2, "Cricket"),
(3, "Swimming"),
(4, "Cycling"),
)
class Hobby(models.Model):
user = models.ForeignKey(Profile, on_delete=models.DO_NOTHING)
field = models.IntegerField(choices=my_choices, default=0)
Функция views.py для профиля:
def profile(request,user):
try:
profile_object = Profile.objects.get(id=user)
if request.method.POST:
form = HobbyForm(request.POST)
if form.is_valid():
profile_object.field = form.cleaned_data["field"]
profile_object.save()
context = {
"form": form,
"profile": profile_object,
}
return render(request, 'mainapp/profile.html', context)
else:
context = {
"form": form,
"profile": profile_object,
}
return render(request, 'mainapp/profile.html', context)
else:
context = {
"form": form,
"profile": profile_object,
}
return render(request, 'mainapp/profile.html', context)
except Profile.DoesNotExist:
context = {
"form": form,
"profile": profile_object,
}
return render(request, 'mainapp/profile.html', context)
Код forms.py дляФактическая форма:
class HobbyForm(ModelForm):
class Meta:
model = Hobby
fields = ["field"]
И страница profile.html:
<form action="myurl/{{profile.id}}/" method="post">
{% csrf_token %}
{% form.as_p %}
<input type="submit" value="OK">
</form>
Когда я запускаю этот код, я получаю следующую ошибку:
TypeError at /profile/
int() argument must be a string, a bytes-like object or a number, not 'Member'
Request Method: GET
Request URL: http://localhost:8000/profile/
Django Version: 2.1.3
Exception Type: TypeError
Exception Value:
int() argument must be a string, a bytes-like object or a number, not 'Member'
Exception Location: C:\Users\install\AppData\Local\Programs\Python\Python36\lib\site-packages\django\db\models\fields\__init__.py in get_prep_value, line 965
Python Executable: C:\Users\install\AppData\Local\Programs\Python\Python36\python.exe
Python Version: 3.6.3
Python Path:
['C:\\Users\\install\\Documents\\coursework\\Mumin',
'C:\\Users\\install\\AppData\\Local\\Programs\\Python\\Python36\\python36.zip',
'C:\\Users\\install\\AppData\\Local\\Programs\\Python\\Python36\\DLLs',
'C:\\Users\\install\\AppData\\Local\\Programs\\Python\\Python36\\lib',
'C:\\Users\\install\\AppData\\Local\\Programs\\Python\\Python36',
'C:\\Users\\install\\AppData\\Roaming\\Python\\Python36\\site-packages',
'C:\\Users\\install\\AppData\\Local\\Programs\\Python\\Python36\\lib\\site-packages']
Server time: Wed, 12 Dec 2018 17:09:26 +0000
По существуя пытаюсь сделать так, чтобы авторизованный пользователь мог добавить интересующие его хобби и сохранить их в базе данных.Хобби предопределены в моделях.По какой-то причине этот код не достигает того, чего я хочу, и я не уверен, почему.Любая помощь приветствуется.