diff --git a/anatomy/admin.py b/anatomy/admin.py index 481e3792..e5ec4775 100644 --- a/anatomy/admin.py +++ b/anatomy/admin.py @@ -9,7 +9,7 @@ from .models import ( Modality, Region, BodyPart, - Structure, + Structure2, ) from generic.models import Examination @@ -59,5 +59,5 @@ admin.site.register(Exam, ExamAdmin) admin.site.register(Modality) admin.site.register(Region) admin.site.register(BodyPart) -admin.site.register(Structure) +admin.site.register(Structure2) diff --git a/anatomy/forms.py b/anatomy/forms.py index e11b7696..d1d5bf24 100644 --- a/anatomy/forms.py +++ b/anatomy/forms.py @@ -14,7 +14,7 @@ from .models import ( AnatomyQuestion, #Examination, BodyPart, - Structure, + Structure2, Region, Modality, QuestionType, @@ -86,7 +86,7 @@ class AnatomyQuestionForm(ModelForm): queryset=Modality.objects.all(), ) - #self.fields["structure"] = ModelChoiceField( + #self.fields["Structure2"] = ModelChoiceField( # required=False, # queryset=Structure.objects.all(), #) @@ -148,7 +148,7 @@ class AnatomyQuestionForm(ModelForm): "image", "region", "modality", - "structure", + "Structure2", "examination", "body_part", "description", @@ -156,7 +156,7 @@ class AnatomyQuestionForm(ModelForm): ] widgets = { - "structure" : autocomplete.ModelSelect2(url='anatomy:structure-autocomplete') + "Structure2" : autocomplete.ModelSelect2(url='anatomy:Structure2-autocomplete') } @@ -197,10 +197,10 @@ class ExaminationForm(ModelForm): fields = ["examination"] -class StructureForm(ModelForm): +class Structure2Form(ModelForm): class Meta: - model = Structure - fields = ["structure"] + model = Structure2 + fields = ["Structure2"] class BodyPartForm(ModelForm): diff --git a/anatomy/migrations/0048_auto_20211025_1102.py b/anatomy/migrations/0048_auto_20211025_1102.py new file mode 100644 index 00000000..d0d0108c --- /dev/null +++ b/anatomy/migrations/0048_auto_20211025_1102.py @@ -0,0 +1,25 @@ +# Generated by Django 3.2.8 on 2021-10-25 10:02 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('anatomy', '0047_auto_20211022_2038'), + ] + + operations = [ + migrations.CreateModel( + name='Structure2', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('structure', models.CharField(max_length=200, unique=True)), + ], + ), + migrations.AlterField( + model_name='anatomyquestion', + name='structure', + field=models.CharField(max_length=255, null=True), + ), + ] diff --git a/anatomy/models.py b/anatomy/models.py index 3a4bed13..6dba484c 100644 --- a/anatomy/models.py +++ b/anatomy/models.py @@ -48,6 +48,11 @@ class Structure(models.Model): def __str__(self): return self.structure +class Structure2(models.Model): + structure = models.CharField(max_length=200, unique=True) + + def __str__(self): + return self.structure class Region(models.Model): region = models.CharField(max_length=200) @@ -110,8 +115,11 @@ class AnatomyQuestion(models.Model): body_part = models.ForeignKey( BodyPart, on_delete=models.SET_NULL, null=True, blank=True ) - structure = models.ForeignKey( - Structure, on_delete=models.SET_NULL, null=True, blank=True + #structure = models.ForeignKey( + # Structure, on_delete=models.SET_NULL, null=True, blank=True + #) + structure = models.CharField( + max_length=255, null=True ) created_date = models.DateTimeField(default=timezone.now) diff --git a/anatomy/urls.py b/anatomy/urls.py index ec3ce6d2..40f5acc6 100644 --- a/anatomy/urls.py +++ b/anatomy/urls.py @@ -1,6 +1,6 @@ from django.urls import path, include -from anatomy.models import Structure +from anatomy.models import Structure2 from . import views from django.views.decorators.cache import cache_page @@ -151,7 +151,7 @@ urlpatterns = [ ), path( "structure-autocomplete", - views.StructureAutocomplete.as_view(model=Structure, create_field='structure'), + views.Structure2Autocomplete.as_view(model=Structure2, create_field='structure'), name="structure-autocomplete", ), ] diff --git a/anatomy/views.py b/anatomy/views.py index 2972adb1..8e609eab 100644 --- a/anatomy/views.py +++ b/anatomy/views.py @@ -34,7 +34,7 @@ from .forms import ( ExaminationForm, MarkAnatomyQuestionForm, AnatomyQuestionForm, - StructureForm, + Structure2Form, ExamForm, ) from .models import ( @@ -42,7 +42,7 @@ from .models import ( BodyPart, CidUserAnswer, # Examination, - Structure, + Structure2, Exam, Answer, # HalfMarkAnswers, @@ -872,7 +872,7 @@ def get_examination_id(request): @login_required def create_structure(request): - form = StructureForm(request.POST or None) + form = Structure2Form(request.POST or None) if form.is_valid(): instance = form.save() return HttpResponse( @@ -880,7 +880,7 @@ def create_structure(request): % (instance.pk, instance) ) return render( - request, "anatomy/create_simple.html", {"form": form, "name": "Structure"} + request, "anatomy/create_simple.html", {"form": form, "name": "Structure2"} ) @@ -888,7 +888,7 @@ def create_structure(request): def get_structure_id(request): if request.is_ajax(): structure_name = request.GET["structure_name"] - structure_id = Structure.objects.get(name=structure_name).id + structure_id = Structure2.objects.get(name=structure_name).id data = { "structure_id": structure_id, } @@ -1003,20 +1003,20 @@ class ExamClone(ExamCloneMixin, ExamCreate): """Clone exam view""" -class StructureAutocomplete(autocomplete.Select2QuerySetView): +class Structure2Autocomplete(autocomplete.Select2QuerySetView): def get_queryset(self): # Don't forget to filter out results depending on the visitor ! if not self.request.user.is_authenticated: - return Structure.objects.none() + return Structure2.objects.none() - qs = Structure.objects.all() + qs = Structure2.objects.all() if self.q: # This raises a fielderror which breaks creating a new item if not caught try: qs = qs.filter(name__istartswith=self.q) except FieldError: - return Structure.objects.none() + return Structure2.objects.none() return qs