Dear Django-users. I'm slowly working towards a Django "data-warehouse" framework, where I can easily add a lot of models (each containing a table with data), while sticking to only few reusable views.
I've realised that in urls.py, it is possible to specify the model on which the UpdateView is going to do its magic. This allows me to use a generic UpdateView (which I called ItemUpdateView) and template for all my models, which will save me a ton of almost identical lines of code. However, in the generic ItemUpdateView, I of course need to specify the fields of the specific model chosen in urls.py. As I ideally only want a few generic views (i.e. ItemCreateView, ItemUpdateView, ItemDeleteView and ItemListView), I've chosen to place the field array in my model definition, hoping to be able to access it from my generic Class Based Views But how do I access the model attribute in (Item)UpdateView thanks, Mikkel >From views.py from django.views.generic import CreateView, ListView, UpdateView, DeleteView class ItemUpdateView(UpdateView): template_name = "item_form.html" # How do I access the model attribute of ItemUpdateView as given in urls.py? # This line below returns the error "NameError: name 'model' not defined" fields = model.fields >From urls.py from django.urls import path from . views import ItemUpdate from . models import Region, Location # Awesome! I can specify the model to be used by ItemUpdateView urlpatterns = [ path('update/region/<pk>', ItemUpdateView.as_view(model=Region), name='region_update'), path('update/location/<pk>', ItemUpdateView.as_view(model=Location), name='location_update'), ] >From models.py (Region and Location are only two of my tables, I'd like to have say 20 or 30 models from django.db import models # Abstract class for our items including common methods, data and definitions class ItemModel(models.Model): fields = [ 'label', 'short', 'descr' ] label = models.CharField(max_length=10) short = models.CharField(max_length=15) descr = models.CharField(max_length=40) def __str__(self): return self.short class Meta: abstract = True class Region(ItemModel): fields = [ 'label', 'short', 'descr' ] class Location(ItemModel): fields = [ 'label', 'short', 'descr', 'region' ] region = models.ForeignKey(Region, on_delete=models.CASCADE) class Plant(ItemModel): fields = [ 'label', 'short', 'descr', 'location', 'capex', 'opex', 'capacity' ] location= models.ForeignKey(Location, on_delete=models.CASCADE) capex = models.DecimalField(decimal_places=3, max_digits=8) opex = models.DecimalField(decimal_places=3, max_digits=8) capacity= models.DecimalField(decimal_places=3, max_digits=8) -- You received this message because you are subscribed to the Google Groups "Django users" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscr...@googlegroups.com. To post to this group, send email to django-users@googlegroups.com. Visit this group at https://groups.google.com/group/django-users. To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/ec4634e5-2279-49a7-9045-21712de87584%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.