In my health app I am attempting to allow that user to enter patient symptom data and save it.
Model logic
I have three models created : Unique_Identity
, Symptom
, and Unique_Identity_Symptom
In Unique_Identity
there is the
symptom_relation = models.ManyToManyField(Symptom, through = 'Unique_Identity_Symptom')
field that connects to the Symptom
model establishing a ManyToMany relationship
In the Unique_Identity_Symptom
model there are these fields:
patient = models.ForeignKey(Unique_Identity, related_name = 'symptoms')
symptom = models.ForeignKey(Symptom, related_name = 'reports')
However I am beginning to doubt the necessity of the Unique_Identity_Symptom
model.
Issue : THe problem is that each time I attempt to save the inserted data using the ModelForm created for the Symptom model I get this error :
ValueError at /optic/Symptom-document/U849343/ invalid literal for int() with base 10: 'U849343'
Traceback:
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/django/core/handlers/exception.py" in inner 41. response = get_response(request)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/django/core/handlers/base.py" in _get_response 187. response = self.process_exception_by_middleware(e, request)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/django/core/handlers/base.py" in _get_response 185. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/django/views/generic/base.py" in view 68. return self.dispatch(request, *args, **kwargs)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/django/views/generic/base.py" in dispatch 88. return handler(request, *args, **kwargs)
File "/Users/iivri.andre/vedic/Identity/optic/views.py" in post 113. Identity_set_unique = Symptom.objects.get(pk=pk)
I have already tried this post, this, this and this but none of the answers are specific to my question.
Here is the code :
Edit :
models document
from django.db import models
from django.contrib.auth.models import User
from Identity import settings
import datetime
class Symptom(models.Model):
symptom_Identity = models.CharField(max_length = 80, default = '')
content = models.TextField(max_length = 1000, default = '')
class Unique_Identity(models.Model):
NIS = models.CharField(max_length = 200, primary_key = True)
user = models.ForeignKey(settings.AUTH_USER_MODEL)
Timestamp = models.DateTimeField(auto_now = True)
first_name = models.CharField(max_length = 80, null = True )
last_name = models.CharField(max_length = 80, null = True )
contact = models.CharField(max_length = 15, null = True)
location = models.CharField(max_length = 100, blank = True)
date_of_birth = models.DateField(auto_now = False, auto_now_add = False, blank = True, null = True)
Symptom_relation = models.ManyToManyField(Symptom, through = 'Unique_Identity_Symptom')
class Unique_Identity_Symptom(models.Model):
Identity = models.ForeignKey(Unique_Identity, related_name = 'symptoms')
Symptom_key = models.ForeignKey(Symptom, related_name = 'reports')
comments = models.TextField(max_length = 1000, help_text='Explain patients feelings, phyical condition, e.t.c .......')
urls document
from django.conf.urls import url
from optic.views import Unique_view, Unique_list_view, Create_Symptom_view
urlpatterns = [
url(r'^$', Unique_view.as_view(), name = 'optic'),
url(r'^Unique-list/$', Unique_list_view.as_view(), name = 'Unique_list'),
url(r'^Symptom-document/(?P<pk>\w+)/$', Create_Symptom_view.as_view(), name = 'Create_Symptom'),
]
Create_Symptom template
{% block body %}
<form method = 'post' novalidate>
{% csrf_token %}
{% if form.non_field_errors %}
<div class="alert alert-danger" role="alert">
{% for error in form.non_field_errors %}
{{ error }}
{% endfor %}
</div>
{% endif %}
<div class = "form-row">
<div class = "form-group">
{{form.symptom_Identity.errors}}
{{form.symptom_Identity}}
</div>
<div class = "form-group">
{{form.content.errors}}
{{form.content}}
</div>
</div>
<button class = "btn-primary btn-large btn ">Save</button>
</form>
</div>
{% endblock %}
views document
from django.shortcuts import render, redirect, reverse
from django.views.generic import CreateView, ListView, TemplateView
from optic.forms import Unique_Identity_Form, Create_Symptom_Form
from optic.models import Unique_Identity, Symptom
class Unique_view(CreateView):
template_name = 'optic/optic.html'
def get(self, request):
form = Unique_Identity_Form()
Optic = Unique_Identity.objects.filter(user = request.user)
var = {'form': form, 'Optic':Optic }
return render(request, self.template_name, var)
def post(self, request):
form = Unique_Identity_Form(request.POST)
being = None
if form.is_valid():
NIS = form.save(commit = False)
NIS.user = request.user
NIS.save()
being = form.cleaned_data['NIS']
form = Unique_Identity_Form()
return redirect('optic:optic')
var = {'form': form, 'being':being }
return render(request,self.template_name, var)
class Unique_list_view(ListView):
model = Unique_Identity
template_name = 'optic/optic_list.html'
def get(self, request):
form = Unique_Identity_Form()
Optic = Unique_Identity.objects.filter(user=request.user)
var = {'form':form, 'Optic':Optic}
return render(request, self.template_name, var)
class Create_Symptom_view(TemplateView):
model = Symptom
template_name = 'optic/Create_Symptom.html'
def get(self, request, pk):
form = Create_Symptom_Form()
vedic = Symptom.objects.all()
var = {'form':form, 'vedic':vedic, 'pk':pk}
return render(request, self.template_name, var)
def post(self, request, pk):
form = Create_Symptom_Form(request.POST)
state = None
if form.is_valid():
vision = form.save(commit = False)
vision.user = request.user
state = form.cleaned_data['content']
vision.save()
Identity_set_unique = Symptom.objects.get(pk=pk)
vision.symptom_relation.add(Identity_set_unique)
vision.save()
form = Create_Symptom_Form()
redirect('optic:optic')
else :
print(form.errors)
var = {'form': form, 'state': state, 'pk':pk}
return render(request, self.template_name, var)