Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Method to add fields to Topic or Comment #300

Open
BoPeng opened this issue Jan 2, 2021 · 5 comments
Open

Method to add fields to Topic or Comment #300

BoPeng opened this issue Jan 2, 2021 · 5 comments

Comments

@BoPeng
Copy link

BoPeng commented Jan 2, 2021

What is the recommended method to add extra fields like tags from django-taggit to Spirit models such as Topic or Comment?

@BoPeng
Copy link
Author

BoPeng commented Jan 2, 2021

#96 (comment) seems to be closest existing discussion that I can find.

@BoPeng
Copy link
Author

BoPeng commented Jan 2, 2021

Spirit does not aim to have overridable apps, you should be able to extend it

So spirit did not allow adding additional fields to the Topic class, like what django-oscar and django-machina provide. Is this still the case now?

@nitely
Copy link
Owner

nitely commented Jan 2, 2021

Create an app, add a model with a OneToOne field to Topic, and the extra fields you need, fork Spirit and add the form to the relevant views and templates.

Extending the Spirit model in-place (like just adding fields willy nilly) is not a good idea. It'll create conflicts with future migrations.

What django-oscar and django-machina provide is not a plugin system; they let you extend/override some model or form, but their way is not composable. How do multiple apps/plugin extend the same model?.

@BoPeng
Copy link
Author

BoPeng commented Jan 2, 2021

Say there is a "product" in my website that a Topic needs to promote. What you are suggesting is that

  1. I create a TopicThatRecommendsProduct model that is one to one to Topic, which is ok.
  2. Since the sprit renderer does not know Product, I will need to fork spirit to add views and forms to mention product, so the fork will actually import product from my models.

Compared to the django-oscar approach, I think the biggest problem is that I will have to maintain Product in both my website and the spirit fork. Can django-hook be used to avoid a fork?

@nitely
Copy link
Owner

nitely commented Jan 2, 2021

Step 2 is to create a form for your product model. Step 3 is to fork Spirit and add the form to whatever view and templates are needed to display the form. You'll need to maintain (i.e: solve git conflicts) the affected views and templates.

Can django-hook be used to avoid a fork?

Yes, but it was never integrated into Spirit, so no...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants