Djongo library error when adding an object to database

94 Views Asked by At

I am getting a djongo library error when I am trying to add an Station object in my admin panel. The error page says there is no exception message supplied so I am facing difficulty to pinpoint what is causing the error. The error is of RecursionError

  File "C:\Users\Admin\Envs\routemaster\lib\site-packages\sqlparse\tokens.py", line 19, in __contains__
    return item is not None and (self is item or item[:len(self)] == self)
RecursionError: maximum recursion depth exceeded in comparison

I asked chatgpt about the same and it suggested me to check my models.py file for any loops in relationship with other models but I did and I think my models.py file is not causing this, So can it be a bug on djongo's side?

models.py

from djongo import models

class City(models.Model):
    name = models.CharField(max_length=100)
    
class Station(models.Model):
    name = models.CharField(max_length=100)
    # Add other station-related fields as needed
    city = models.ForeignKey(City, on_delete=models.CASCADE)

    def __str__(self):
        return self.name

class Bus(models.Model):
    number = models.CharField(max_length=10)
    # Add other bus-related fields as needed

    # Define a Many-to-Many relationship with Station
    stations = models.ManyToManyField(Station)

    def __str__(self):
        return self.number

Full first traceback error

Internal Server Error: /admin/bus/station/add/
Traceback (most recent call last):
  File "C:\Users\Admin\Envs\routemaster\lib\site-packages\djongo\sql2mongo\query.py", line 808, in __iter__
    yield from iter(self._query)
  File "C:\Users\Admin\Envs\routemaster\lib\site-packages\djongo\sql2mongo\query.py", line 167, in __iter__
    yield self._align_results(doc)
  File "C:\Users\Admin\Envs\routemaster\lib\site-packages\djongo\sql2mongo\query.py", line 269, in _align_results
    if selected.table == self.left_table:
  File "C:\Users\Admin\Envs\routemaster\lib\site-packages\djongo\sql2mongo\sql_tokens.py", line 133, in table
    return alias2token[name].table
  File "C:\Users\Admin\Envs\routemaster\lib\site-packages\djongo\sql2mongo\sql_tokens.py", line 133, in table
    return alias2token[name].table
  File "C:\Users\Admin\Envs\routemaster\lib\site-packages\djongo\sql2mongo\sql_tokens.py", line 133, in table
    return alias2token[name].table
  [Previous line repeated 917 more times]
  File "C:\Users\Admin\Envs\routemaster\lib\site-packages\djongo\sql2mongo\sql_tokens.py", line 130, in table
    name = self.given_table
  File "C:\Users\Admin\Envs\routemaster\lib\site-packages\djongo\sql2mongo\sql_tokens.py", line 141, in given_table
    name = self._token.get_real_name()
  File "C:\Users\Admin\Envs\routemaster\lib\site-packages\sqlparse\sql.py", line 361, in get_real_name
    return self._get_first_name(dot_idx)
  File "C:\Users\Admin\Envs\routemaster\lib\site-packages\sqlparse\sql.py", line 386, in _get_first_name
    return token.get_name()
  File "C:\Users\Admin\Envs\routemaster\lib\site-packages\sqlparse\sql.py", line 355, in get_name
    return self.get_alias() or self.get_real_name()
  File "C:\Users\Admin\Envs\routemaster\lib\site-packages\sqlparse\sql.py", line 344, in get_alias
    _, ws = self.token_next_by(t=T.Whitespace)
  File "C:\Users\Admin\Envs\routemaster\lib\site-packages\sqlparse\sql.py", line 244, in token_next_by
    return self._token_matching(funcs, idx, end)
  File "C:\Users\Admin\Envs\routemaster\lib\site-packages\sqlparse\sql.py", line 223, in _token_matching
    if func(token):
  File "C:\Users\Admin\Envs\routemaster\lib\site-packages\sqlparse\sql.py", line 242, in <lambda>
    funcs = lambda tk: imt(tk, i, m, t)
  File "C:\Users\Admin\Envs\routemaster\lib\site-packages\sqlparse\utils.py", line 100, in imt
    elif types and any(token.ttype in ttype for ttype in types):
  File "C:\Users\Admin\Envs\routemaster\lib\site-packages\sqlparse\utils.py", line 100, in <genexpr>
    elif types and any(token.ttype in ttype for ttype in types):
  File "C:\Users\Admin\Envs\routemaster\lib\site-packages\sqlparse\tokens.py", line 19, in __contains__
    return item is not None and (self is item or item[:len(self)] == self)
RecursionError: maximum recursion depth exceeded in comparison

Note- After removing the foreignkey relation in Stations the error is eliminated. But I want to use that feature so can someone fix it

1

There are 1 best solutions below

0
random king On

If you want to resolve this issue just switch to Django<=4.0.10,pymongo==3.12.3. This will surely fix your issue. After changing this you would be able to add data related to foreign key.