morlandi / django-ajax-datatable

A Django app which provides the integration of a Django project with the jQuery Javascript library DataTables.net
MIT License
204 stars 64 forks source link

foreign_field option breaks for models.OneToOneRel #127

Open Eric-RemoteNC opened 4 months ago

Eric-RemoteNC commented 4 months ago

column_defs 's foreign_field option breaks for models.OneToOneRel when there is no related_model linking to this obj. Maybe in columns.py, get_foreign_value has to check if current_path_item is one of the OneToOneRel's name.

To be more specific, here is my test code:

models.py

class ModelA(MyModel):

    class Meta:
        ordering = ['pk']

class ModelB(MyModel):
    modelA = models.OneToOneField(ModelA,
                                  related_name='modelB',
                                  on_delete=models.CASCADE,
                                  null=True, blank=True,
                                  verbose_name="ModelA")

    class Meta:
        ordering = ['pk']

ajax_datatable_views.py

class ModelA_AjaxDatatableView(AjaxDatatableView):
    model = ModelA
    column_defs = [
        {
            "title": "id",
            "name": "id",
        },
        {
            "title": "modelB",
            "name": "modelB__id",
            "foreign_field": "modelB__id",
        }
    ]

p.s. Thank you for this fantastic project