Models.py- In Hiring Model class Driver field is OneToOneField, how to fetch data from that, i did not find any proper solution how to work with OneToOneField relation, please help me out
JavaScript
x
47
47
1
class Driver(BaseModel):
2
employee_id = models.CharField(max_length=8,unique=True,null=True, default=True)
3
city = models.ForeignKey(
4
City,
5
models.CASCADE,
6
verbose_name='City',
7
null=True, blank=True
8
)
9
location = models.ForeignKey(
10
Location,
11
models.CASCADE,
12
verbose_name='Location',
13
null=True, blank=True
14
)
15
city = models.ForeignKey(
16
City,
17
models.CASCADE,
18
verbose_name='City',
19
null=True, blank=True
20
)
21
class City(BaseModel):
22
name = models.CharField('Name', max_length=80)
23
employee_series = models.CharField('Name', max_length=3)
24
available_employee_id = models.IntegerField(default=1)
25
26
def __str__(self):
27
return self.name
28
class Location(BaseModel):
29
city = models.ForeignKey(
30
City,
31
models.CASCADE,
32
verbose_name='City',
33
)
34
name = models.CharField('Name', max_length=80)
35
36
def __str__(self):
37
return self.name
38
class Hiring(BaseModel):
39
driver = models.OneToOneField(
40
Driver,
41
models.CASCADE,
42
related_name='driver',
43
verbose_name='Driver',
44
null=True, blank=True
45
)
46
status = models.CharField(max_length = 255,choices=STATUS_CHOICES, null=True, blank=True)
47
serializers.py
JavaScript
1
22
22
1
class CitySerializer(serializers.ModelSerializer):
2
class Meta:
3
model = City
4
fields = ('id', 'name')
5
class LocationSerializer(serializers.ModelSerializer):
6
class Meta:
7
model = Location
8
fields = ('id', 'name')
9
10
class HiringstatusSerializer(serializers.ModelSerializer):
11
class Meta:
12
model = Hiring
13
fields = ('id','driver', 'status')
14
15
class DriverEditListSerializer(serializers.ModelSerializer):
16
city = CitySerializer(read_only=True)
17
location = LocationSerializer()
18
hiring=HiringstatusSerializer(many=True, required=False, allow_null=True)
19
class Meta:
20
model = Driver
21
fields=('id','city','location','hiring')
22
views.py this is views.py render data at frontend
JavaScript
1
18
18
1
class DriverViewSet(viewsets.ModelViewSet):
2
queryset = Driver.objects.filter(is_active=1)
3
serializer_class = DriverEditListSerializer
4
def get_queryset(self):
5
queryset = Driver.objects.filter(is_active=1,
6
city_id=self.request.GET.get('city_id'))
7
return queryset
8
9
def list_edit_drivers(request):
10
driver = Driver.objects.filter(city_id=request.session['global_city_id'])
11
context = {
12
'menu_hiring': 'active',
13
'submenu_driver_edit_list': 'active',
14
'driver': driver,
15
'city_id': request.session['global_city_id']
16
}
17
return render(request, 'hiringprocess/list_edit_drivers.html', context=context)
18
list_edit_drivers.html- html file while ajax calling
JavaScript
1
33
33
1
var table = $('#drivers').DataTable({
2
"pageLength": 100,
3
"serverSide": true,
4
"bSearchable":true,
5
"dom": 'blfrtip',
6
"ajax": "/fleet/dt/editdrivers/?format=datatables&city_id={{city_id}}",
7
8
"columns": [
9
10
{
11
"data": "uber_name"
12
},
13
{
14
"data": "mobile"
15
},
16
{
17
"data": "uber_device_no"
18
},
19
20
{
21
"data": "location.name"
22
},
23
{
24
"data": "status"
25
},
26
{
27
"data": "hiring.status"
28
},
29
30
31
});
32
});
33
output error– while added some hiring.status column in fornt end error
JavaScript
1
50
50
1
ERROR Internal Server Error: /fleet/dt/editdrivers/
2
Traceback (most recent call last):
3
File "E:10dec_everestfleeteverest_jarvisenvlibsite-packagesdjangocorehandlersexception.py", line 34, in inner
4
response = get_response(request)
5
File "E:10dec_everestfleeteverest_jarvisenvlibsite-packagesdjangocorehandlersbase.py", line 115, in _get_response
6
response = self.process_exception_by_middleware(e, request)
7
File "E:10dec_everestfleeteverest_jarvisenvlibsite-packagesdjangocorehandlersbase.py", line 113, in _get_response
8
response = wrapped_callback(request, *callback_args, **callback_kwargs)
9
File "E:10dec_everestfleeteverest_jarvisenvlibsite-packagesdjangoviewsdecoratorscsrf.py", line 54, in wrapped_view
10
return view_func(*args, **kwargs)
11
File "E:10dec_everestfleeteverest_jarvisenvlibsite-packagesrest_frameworkviewsets.py", line 125, in view
12
return self.dispatch(request, *args, **kwargs)
13
File "E:10dec_everestfleeteverest_jarvisenvlibsite-packagesdjangoutilsdecorators.py", line 45, in _wrapper
14
return bound_method(*args, **kwargs)
15
File "E:10dec_everestfleeteverest_jarvisenvlibsite-packagesdjangocontribauthdecorators.py", line 21, in _wrapped_view
16
return view_func(request, *args, **kwargs)
17
File "E:10dec_everestfleeteverest_jarvisenvlibsite-packagesrest_frameworkviews.py", line 509, in dispatch
18
response = self.handle_exception(exc)
19
File "E:10dec_everestfleeteverest_jarvisenvlibsite-packagesrest_frameworkviews.py", line 469, in handle_exception
20
self.raise_uncaught_exception(exc)
21
File "E:10dec_everestfleeteverest_jarvisenvlibsite-packagesrest_frameworkviews.py", line 480, in raise_uncaught_exception
22
raise exc
23
File "E:10dec_everestfleeteverest_jarvisenvlibsite-packagesrest_frameworkviews.py", line 506, in dispatch
24
response = handler(request, *args, **kwargs)
25
File "E:10dec_everestfleeteverest_jarvisenvlibsite-packagesrest_frameworkmixins.py", line 38, in list
26
queryset = self.filter_queryset(self.get_queryset())
27
File "E:10dec_everestfleeteverest_jarvisenvlibsite-packagesrest_frameworkgenerics.py", line 150, in filter_queryset
28
queryset = backend().filter_queryset(self.request, queryset, self)
29
File "E:10dec_everestfleeteverest_jarvisenvlibsite-packagesrest_framework_datatablesfilters.py", line 186, in filter_queryset
30
queryset = queryset.filter(q).distinct()
31
File "E:10dec_everestfleeteverest_jarvisenvlibsite-packagesdjangodbmodelsquery.py", line 892, in filter
32
return self._filter_or_exclude(False, *args, **kwargs)
33
File "E:10dec_everestfleeteverest_jarvisenvlibsite-packagesdjangodbmodelsquery.py", line 910, in _filter_or_exclude
34
clone.query.add_q(Q(*args, **kwargs))
35
File "E:10dec_everestfleeteverest_jarvisenvlibsite-packagesdjangodbmodelssqlquery.py", line 1290, in add_q
36
clause, _ = self._add_q(q_object, self.used_aliases)
37
File "E:10dec_everestfleeteverest_jarvisenvlibsite-packagesdjangodbmodelssqlquery.py", line 1312, in _add_q
38
current_negated, allow_joins, split_subq)
39
File "E:10dec_everestfleeteverest_jarvisenvlibsite-packagesdjangodbmodelssqlquery.py", line 1318, in _add_q
40
split_subq=split_subq, simple_col=simple_col,
41
File "E:10dec_everestfleeteverest_jarvisenvlibsite-packagesdjangodbmodelssqlquery.py", line 1190, in build_filter
42
lookups, parts, reffed_expression = self.solve_lookup_type(arg)
43
File "E:10dec_everestfleeteverest_jarvisenvlibsite-packagesdjangodbmodelssqlquery.py", line 1049, in solve_lookup_type
44
_, field, _, lookup_parts = self.names_to_path(lookup_splitted, self.get_meta())
45
File "E:10dec_everestfleeteverest_jarvisenvlibsite-packagesdjangodbmodelssqlquery.py", line 1420, in names_to_path
46
"Choices are: %s" % (name, ", ".join(available)))
47
django.core.exceptions.FieldError: Cannot resolve keyword 'hiring' into field. Choices are: aadhar, aadhar_back, aadhar_no, aadhar_verification, admission_form_status, alternate_number, appuser, bank_account_no, bank_holder_name, bank_name, bank_passbook, bill, carsnotdriven, carstatus, city, city_id, created_at, created_by, created_by_id, dailytrip, date_of_exit, date_of_joining, dl_extract, driver, driver_city, driverchangelog, driverpenalty, driverstatus, duty, employee_id, employer,
48
employer_id, essentialservicetravel, form_complete_status, fuelbill, id, ifsc_code, is_active, is_deleted, ledger, ledger_balance, ledger_balance_prev, ledger_balance_week, ledger_balance_week_prev, license, license_expiry_date, license_issue_date, license_no, location, location_id, mobile, name, pan, pan_no, payment_type, payout, permanent_address, photo, present_address, reference, remark, rent_agreement, salary_plan, shift, shift1, shift1_driver, shift2, shift2_driver, shiftreport, source, status, sw_pass, training_status, trip, type, uber_device_no, uber_name, uber_uuid, updated_at, updated_by, updated_by_id, vista_password, vista_username, weeklydata
49
ERROR "GET /fleet/dt/editdrivers/?format=datatables&city_id=1&draw=2&columns%5B0%5D%5Bdata%5D=employee_id&columns%5B0%5D%5Bname%5D=&columns%5B0%5D%5Bsearchable%5D=true&columns%5B0%5D%5Borderable%5D=true&columns%5B0%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B0%5D%5Bsearch%5D%5Bregex%5D=false&columns%5B1%5D%5Bdata%5D=uber_name&columns%5B1%5D%5Bname%5D=&columns%5B1%5D%5Bsearchable%5D=true&columns%5B1%5D%5Borderable%5D=true&columns%5B1%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B1%5D%5Bsearch%5D%5Bregex%5D=false&columns%5B2%5D%5Bdata%5D=mobile&columns%5B2%5D%5Bname%5D=&columns%5B2%5D%5Bsearchable%5D=true&columns%5B2%5D%5Borderable%5D=true&columns%5B2%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B2%5D%5Bsearch%5D%5Bregex%5D=false&columns%5B3%5D%5Bdata%5D=uber_device_no&columns%5B3%5D%5Bname%5D=&columns%5B3%5D%5Bsearchable%5D=true&columns%5B3%5D%5Borderable%5D=true&columns%5B3%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B3%5D%5Bsearch%5D%5Bregex%5D=false&columns%5B4%5D%5Bdata%5D=aadhar_no&columns%5B4%5D%5Bname%5D=&columns%5B4%5D%5Bsearchable%5D=true&columns%5B4%5D%5Borderable%5D=true&columns%5B4%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B4%5D%5Bsearch%5D%5Bregex%5D=false&columns%5B5%5D%5Bdata%5D=location.name&columns%5B5%5D%5Bname%5D=&columns%5B5%5D%5Bsearchable%5D=true&columns%5B5%5D%5Borderable%5D=true&columns%5B5%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B5%5D%5Bsearch%5D%5Bregex%5D=false&columns%5B6%5D%5Bdata%5D=status&columns%5B6%5D%5Bname%5D=&columns%5B6%5D%5Bsearchable%5D=true&columns%5B6%5D%5Borderable%5D=true&columns%5B6%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B6%5D%5Bsearch%5D%5Bregex%5D=false&columns%5B7%5D%5Bdata%5D=hiring.status&columns%5B7%5D%5Bname%5D=&columns%5B7%5D%5Bsearchable%5D=true&columns%5B7%5D%5Borderable%5D=true&columns%5B7%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B7%5D%5Bsearch%5D%5Bregex%5D=false&columns%5B8%5D%5Bdata%5D=id&columns%5B8%5D%5Bname%5D=&columns%5B8%5D%5Bsearchable%5D=true&columns%5B8%5D%5Borderable%5D=false&columns%5B8%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B8%5D%5Bsearch%5D%5Bregex%5D=false&order%5B0%5D%5Bcolumn%5D=0&order%5B0%5D%5Bdir%5D=asc&start=0&length=100&search%5Bvalue%5D=Training+Completed%09&search%5Bregex%5D=false&_=1641204802582 HTTP/1.1" 500 30874
50
Advertisement
Answer
Changes related and verbose name solve this problem:
JavaScript
1
10
10
1
class Hiring(BaseModel):
2
driver = models.OneToOneField(
3
Driver,
4
models.CASCADE,
5
related_name='hiring',
6
verbose_name='hiring',
7
null=True, blank=True
8
)
9
status = models.CharField(max_length = 255,choices=STATUS_CHOICES, null=True, blank=True)
10