Code Monkey home page Code Monkey logo

Comments (6)

vdboor avatar vdboor commented on May 29, 2024

Hi! thanks for getting in touch.

I'm curious what kind of code you're working with, because I can't quite understand the situation from the error message alone. It almost looks like you're connecting to the translated model directly instead of the shared model. Can you post something here, or as a Gist? That way I can also share some caveats. :)

from django-parler.

egasimus avatar egasimus commented on May 29, 2024

Here's what I'm doing. It's pretty basic; trying to work solely with the shared model, too. Let me know if you need more info.

from django-parler.

bikeshedder avatar bikeshedder commented on May 29, 2024

The main problem here is that a ManyToManyField - despite its name - is not a real field. Every M2M field creates a table which links the models together.

Given the following models:

class A(TranslatedModel):
    translations = TranslatedFields(
        b_set = models.ManyToManyField('B', related_name='a_set')
    )

class B(models.Model):
    pass

You get an implicit translation model for A:

class ATranslation(models.Model):
    b_set = models.ManyToManyField('B', related_name='a_set')

And an implicit M2M model:

class ATranslation_b(models.Model):
    atranslation = models.ForeignKey('A')
    b = models.ForeignKey('B')

This M2M table can be used to navigate from a translated A to B just fine, but the related_name in B is kinda useless as you end up reaching the translation model which is counter intuitive.

A modified TranslatedManyToManyField could be smart and run A.objects.filter(translations__language=get_current_language(), translations__b_set=b) in the related manager and only give you B objects of the current language.

This is a tough nut to crack as it will probably require a lot of tinkering with Django internals. It would be a great addition to django-parler though.

from django-parler.

vstoykov avatar vstoykov commented on May 29, 2024

@egasimus Without traceback almost always is harder to tell why some error is raised.

I saw your error when preparing a patch for #131. I'm not sure if this error is raised for you at the same place where it was raised for me (In the TranslatedFieldsModel._get_field_values() when running under Django 1.8). You can test my changes in #132 to see if it will work for you.

In order to fully support M2M fields in django-parler I think that more work need to be done, but probably my changes are the beginning.

from django-parler.

hedleyroos avatar hedleyroos commented on May 29, 2024

Thread necromancy. I added M2M support in #300.

from django-parler.

vdboor avatar vdboor commented on May 29, 2024

PR is merged!

from django-parler.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.