On Wed, Jun 17, 2009 at 14:42, Richard Colley <richard.col...@gmail.com>wrote:

>
> Thanks TiNo,
>
> Are there any caveats with this?  e.g. to make syncdb etc. work
> correctly?


I don't know, as I never tried, and I am not very experienced with messing
with the inner meta class, but: blank has nothing to do with syncdb, only
null does. So this means that you will end up with two tables in the
database that are the same, they will both allow NULL values. Only Django
will enforce a non-empty value on the fields of the XYZ class. I don't know
how you would change the null-attribute values before running syncdb. Maybe
you do require Dynamic Models then.

>
>
> On Jun 17, 10:13 pm, TiNo <tin...@gmail.com> wrote:
> > You can acces a models field through Model._meta.fields. You can probably
> > loop through these fields in your Model's __init__ method, and change
> their
> > blank attribute to false.
> >
> > TiNo
> >
> > On Wed, Jun 17, 2009 at 13:32, Richard Colley <richard.col...@gmail.com
> >wrote:
> >
> >
> >
> > > Ok, after looking through the django wiki entries for AuditTrail
> > > (http://code.djangoproject.com/wiki/AuditTrail) and DynamicModels
> > > (http://code.djangoproject.com/wiki/DynamicModels), I guess I can see
> > > that there is a potential solution there.
> >
> > > But I'd still appreciate any comments on the desirability of doing
> > > this, and potential alternative solutions.
> >
> > > Thanks,
> > > Richard
> >
> > > On Jun 17, 8:03 pm, Richard Colley <richard.col...@gmail.com> wrote:
> > > > I have a need to define 2 models, both with a large number of fields
> > > > in common, but where in once case these common fields are completely
> > > > optional, and in the other case they are mandatory.
> >
> > > > class XYZTemplate(Model):
> > > >   field_a = TextField( .... blank=True)
> > > >   field_b = TextField( .... blank=True)
> > > >   field_c = IntegerField( .... blank=True)
> > > >   # other fields unique to this class
> >
> > > > Notice, in the XYZTemplate, the fields from A are all optional.
> >
> > > > class XYZ(Model):
> > > >   field_a = TextField( .... blank=False)
> > > >   field_b = TextField( .... blank=False)
> > > >   field_c = IntegerField( .... blank=False)
> > > >   # other fields unique to this class
> >
> > > > But in XYZ they must be filled in.
> >
> > > > My purpose is to allow "templates" (gee that's a bit of an overworked
> > > > term ... I am *not* referring here to django html templates) of an
> > > > object to be partially filled in and stored in the database as an
> > > > XYZTemplate  Then at a later time, many XYZ instances will be created
> > > > based on the "default" values stored in an XYZTemplate instance.
> >
> > > > I was thinking along the lines of an abstract model like so:
> >
> > > > class A(Model):
> > > >   field_a = TextField( .... blank=True)
> > > >   field_b = TextField( .... blank=True)
> > > >   field_c = IntegerField( .... blank=True)
> > > >   class Meta:
> > > >     abstract=True
> > > >     app_label='...'
> >
> > > > Then define the other classes as:
> >
> > > > class XYZTemplate(Model, A):
> > > >   # other fields unique to this class
> >
> > > > class XYZ(Model, A):
> > > >   # other fields unique to this class
> >
> > > > But how do I make the XYZ field_a, field_b, field_c have blank=False.
> >
> > > > Without violating DRY, is there any way I can do this in Django?  Can
> > > > I fiddle with the attributes of the fields from class A in class XYZ?
> > > > Any other solutions?
> >
> > > > Thanks for any advice,
> > > > Richard
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@googlegroups.com
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to